摘要:
注意在现在的gcc中, const可能会被用指针绕过。 阅读全文
摘要:
结构体属于构造数据类型,用struct标识。
//1.定义结构体类型的时候,里面是分号,定义完毕后要加分号。
// 2.定义并初始化一个结构体
//3.0 定义并初始化一个结构体时,可以点赋值
//3.1 点赋值只能是初始化结构体变量时才能用
c = a;//4.结构体直接赋值(方法1)
d = func1();//5.结构体直接赋值(方法2) 结构体作为函数返回值对另一个结构体赋值.
//6.声明之后为一个结构体变量赋值效果.不同于定义并初始化一个结构体变量。
//7.结构体直接赋值的不安全因素:(c语言) 阅读全文
摘要:
1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储。
2:结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储.(struct a里存有struct b,b里有char,int ,double等元素,那b应该从8的整数倍开始存储.)
3:收尾工作:结构体的总大小,也就是sizeof的结果,.必须是其内部最大成员的整数倍.不足的要补齐.
4:注意套用三原则里计算的对齐值是不能大于#pragma pack指定的n值. gcc默认是#pragma pack(4),并且gcc只支持1,2,4对齐。 阅读全文
摘要:
1). 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)
2). 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
3). 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。 阅读全文
摘要:
函数调用,内存,malloc 阅读全文
摘要:
声明指向常量字符串的指针时最好这样:
const char* p = "..."; 阅读全文
摘要:
在设置错误代号时,使用enum比宏更好看。 enum最常用的用法就是作为“宏”的集合(如:错误代码集, 信息代码集。) 在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作, 此时enum是比#define更好的替代方式。 注意:同一个程序中不能定义同名的枚举 阅读全文
摘要:
union:不允许只用联合变量名作赋值或其它操作。也不允许对联合变量作初始化赋值,赋值只能在程序中进行。小端存储:以字节为单位,低存低,高存高。任何数据在内存中都是以二进制(1或着0)顺序存储的,每一个1或着0被称为1位,而在x86CPU上一个字节是8位。比如一个16位(2字节)的 short in... 阅读全文
摘要:
二维数组(数组名与地址的关系); 阅读全文