struct A{long num;char *name;short int data;char ha;short ba[5];} *p;int main(){printf("结构体A的大小:%d\n", sizeof(struct A));printf("num的大小:%d\n", sizeof(((struct A *)0)->num));printf("name的大小:%d\n", sizeof(((struct A *)0)->name));printf("data的大小:%d\n", sizeof(((struct A *)0)->data));printf("ha大小:%d\n", sizeof(((struct A *)0)->ha));printf("ba的大小:%d\n", sizeof(((struct A *)0)->ba));return 0;}
在32位机器上,在对齐为4情况下,sizeof(long)
的结果为4字节,sizeof(char*)
的结果为4字节,sizeof(short int)
的结果与sizeof(short)
的结果都为2字节,sizeof(char)
的结果为1字节,sizeof(int)
的结果为4字节
strlen(“\0”)与sizeof(“\0”)
strlen("\0") = 0
,sizeof("\0") = 2
。
strlen
strlen用来计算字符串的长度,它从内存的某个位置开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值
sizeof
sizeof是C语言的关键字,它以字节的形式给出了其操作数的存储大小,操作数可以是一个表达式或括在括号内的类型名,操作数的存储大小由操作数的类型决定
sizeof("\0") = 2,
这是因为在C/C++中,字符串字面量(以双引号括起来的字符序列)包括其实际字符内容和一个null终止符(’\0’)作为字符串的结束标志。因此,字符串 “\0” 实际上包含两个字符:一个是null终止符,另一个是实际的字符。