寥寥数笔,记录我的C语言盲点笔记,仅仅为以前经历过,亦有误,可交流。

1.逻辑表达式的使用
取值 = 表达式 ? 表达式1:表达式2;
比方x = y > z ? y:z
2."+,-"等逻辑运算符优先级大于移位,移位大于逻辑运算
3.
sizeof在编译时由编译器完毕,对其传入的參数不做运算处理。
sizeof(i++);返回4;不会对实际的i进行操作
sizeof和strlen的差别是,后者是运算时运行。
返回遇到非NULL时的字符个数。
sizeof处理数组名时会统计分配的内存数,如a[12] = {};则sizeof(a) = 12;
如a [] = "aaa",则编译器是分配4内存空间存放数据,sizeof(a)= 4;
4.强制类型转换先于+,-,故指针类型变化后,自加操作会不同;
5.invalid combination of type specifiers
无效的类型进行组合。引起的原因主要是头文件多种数据类型define和typedef引起了错误。
typedef是一个类型的重定义 不是宏的值的重定义 仅仅能用于类型的替换

,主要在编译阶段,须要带有分号

define是宏定义,主要在预处理阶段,不太适合做类型转换,结尾分号会被带入宏替换
比方先定义
#define Uint8 unsigned char 
typedef xdc_Uint8 Uint8;这就进行了宏替换为:
typedef xdc_unsigned char Uint8;从而导致了类型结合无效的现象。故define宏是预处理的替换,而typedef是做到数据类型的真正转换与定义。
宏最好不要进行typedef的转换!!!。
数据类型在多处定义时,注意不要出现上述情况
6.printf输出%号,须要使用printf("%%\n");来输出
7.逻辑或与运算或要切记:
|和||,以及&和&&的使用。
8.取非!和~的运算优先级》 + -;
9 strcpy是将源地址開始到\0结束的字节数拷贝到目的地址。
strlen统计的从源地址到遇到\0前的字节数,不算如\0
10.某一位置1 A |= (1 << 5);
某一位置0 A &=  ~(1 << 5);
某一位取反 A ^= (1 << 5); 与1异或取反。
11. union进行赋值时须要使用a.b操作
12、0x%08x,输出16进制数要达到8位,不然在前面补0
14.栈帧包含还有一帧须要的函数參数,返回的pc地址以及当前帧的ebp.
15. 结构体对齐
struct test
{
char x1;
short x2;
float x3;
char x4;
};
因为编译器默认情况下会对这个struct作自然边界(有人说“自然对界”我认为边界更顺口)对齐,结 构的第一个成员x1,其偏移地址为0,占领了第1个字节。第二个成员x2为short类型,其起始地址必须2字节对界,因此,编译器在x2和x1之间填充 了一个空字节。结构的第三个成员x3和第四个成员x4恰好落在其自然边界地址上,在它们前面不须要额外的填充字节。在test结构中,成员x3要求4字节 对界,是该结构全部成员中要求的最大边界单元,因而test结构的自然对界条件为4字节,编译器在成员x4后面填充了3个空字节。整个结构所占领空间为 12字节。
16. 
memset(),是将n个字节都设置为传入的一个字节如memset(a, 0, 100);
memcpy(dst, src, n);将src開始的n个字节copy到目的上去。
17.多进程引用的动态链接库中的全局变量问题 
因为不同进程间是独立的,有自己的text和data,而全局位于数据段,故不会存在竞争的现象。
18.struct的一种结构体数组申明与定义的方法。
static struct {   char *name;
    int offset;  } _reg_list[] = {};
 
a

c语言编写经验逐步积累4的更多相关文章

  1. c语言编写51单片机中断程序,执行过程是怎样的?

    Q:c语言编写51单片机中断程序,执行过程是怎样的? 例如程序:#include<reg52.h>  void main(void)  {   EA=1;      //开放总中断   E ...

  2. 基于php基础语言编写的小程序之计算器

    基于php基础语言编写的小程序之计算器 需求:在输入框中输入数字进行加.减.乘.除运算(html+php) 思路: 1首先要创建输入数字和运算符的输入框,数字用input的text属性,运算符用sel ...

  3. 如何用C语言编写病毒‘

    怎样用C语言编写病毒在分析病毒机理的基础上,用C语言写了一个小病毒作为实例,用TURBOC2.0实现.[Abstract] This paper introduce the charateristic ...

  4. 选择使用c语言编写的phalcon框架

    使用这个框架,我总结了如下几点考虑 1.这个框架速度快.纯c语言编写的框架,速度都比php框架快,省去了中间环节.当然,使用它不仅仅是性能考虑.因为如果为了解决php性能问题,完全可以有很多种方式,不 ...

  5. [改善Java代码]易变业务使用脚本语言编写

    建议16: 易变业务使用脚本语言编写 Java世界一直在遭受着异种语言的入侵,比如PHP.Ruby.Groovy.JavaScript等,这些“入侵者”都有一个共同特征:全是同一类语言—脚本语言,它们 ...

  6. 运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库

    运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程 有关前两篇的链接: 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 运 ...

  7. 运用Python语言编写获取Linux基本系统信息(二):文件系统使用情况获取

    本文跟着上一篇文章继续写,上一篇文章的链接 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 一.随便说说 获取文件系统使用情况的思路和上一篇获取主要系统是 ...

  8. C语言编写的bmp读写程序

    C语言编写的bmp读写程序 建议先把bmp的数据存储格式了解下 <span style="font-size:16px;">#include "Windows ...

  9. 使用C语言编写windows服务一般框架

    原文:使用C语言编写windows服务一般框架 编写windows服务和编写windows应用程序一样,有一些回调函数必须填写且向windows 服务管理器(service manager)进行注册, ...

随机推荐

  1. R与数据分析旧笔记(十四) 动态聚类:K-means

    动态聚类:K-means方法 动态聚类:K-means方法 算法 选择K个点作为初始质心 将每个点指派到最近的质心,形成K个簇(聚类) 重新计算每个簇的质心 重复2-3直至质心不发生变化 kmeans ...

  2. poj 3228 Gold Transportation 二分+网络流

    题目链接 给出n个城市, 每个城市有一个仓库, 仓库有容量限制, 同时每个城市也有一些货物, 货物必须放到仓库中. 城市之间有路相连, 每条路有长度. 因为有些城市的货物量大于仓库的容量, 所以要运到 ...

  3. 删除windows7保留分区

    在系统里以管理员运行CMD.exe键入diskpartsel disk 0  (select 选择硬盘)list vol  (查看卷)sel vol 0  (选择卷,0为保留分区)inactive ( ...

  4. mysql 性别存储

    大家在设计数据库时,碰到 性别.状态等 这些 值比较固定的列时,数据类型 是如何定义? 通常都是采用 : 1 create table `XXX` 2 ( 3 ........ 4 sex int(1 ...

  5. [置顶] SpecDD(混合的敏捷方法模型)主要过程概述

    敏捷已成为当今使用最广泛的开发方法.有趣的是,敏捷方法的流行性并不是因为它取代了其他开发方法,相反它与这些方法进行了更好地融合.现实世界众多敏捷项目的成功,也证明了敏捷将走向杂化的未来. SpecDD ...

  6. 《火球——UML大战需求分析》(0.2)——目录

    说明: <火球——UML大战需求分析>是我撰写的一本关于需求分析及UML方面的书,我将会在CSDN上为大家分享前面几章的内容,总字数在几万以上,图片有数十张.欢迎你按文章的序号顺序阅读,谢 ...

  7. NYOJ 527 AC_mm玩dota

    AC_mm玩dota 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 大家都知道AC_mm比较喜欢玩游戏,特别是擅长war3这款经典游戏.某天AC_mm来到了VS平台上 ...

  8. openStack deep dive,Retake Policy

    Method of Payment: visa MasterCard American Express Discover

  9. HDU 4633 Who's Aunt Zhang (Polya定理+快速幂)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4633 典型的Polya定理: 思路:根据Burnside引理,等价类个数等于所有的置换群中的不动点的个 ...

  10. MD5的加密和解密(总结)

    效果图例如以下: package com.test; import java.security.MessageDigest; public class MD5 { // MD5加码.32位 publi ...