c语言面试题之sizeof
Table of Contents
1 sizeof
sizeof是c语言中判断数据类型或者表达式的长度符,它不是函数,,字节数的计算在程序编译
时进行,而不是在程序执行的过程中才计算出来!(文采不行,我就废话下了,接下来上重点)!
#includeint main(int argc, char* argv[]) { char str[]="123"; char *p=str; printf("%d\n", sizeof(‘a‘)); //=4 printf("%d\n", sizeof("a")); //=2 printf("%d\n", sizeof(str)); //=4 printf("%d\n", sizeof(p)); //=4/8 printf("%d\n", sizeof(*p)); //=1 return 0; }
- sizeof(‘a‘) == 4
众所周知‘a‘对应的ascii码的值为97,即 ‘a‘==97,换句话讲
sizeof(‘a‘) 等价于 sizeof(97); 换句话讲,编译器把它当整型常量int处理 - sizeof("a") == 2 无需解释你们懂
- sizeof(str) == 4 求的是数组占用空间大小
- sizeof(p) == 4或者8
32位系统无论什么类型的指针,大小都是4个字节
64位系统无论什么类型的指针,大小都是8个字节 - sizeof(*p)=1 等价于 sizeof(str1)
Footnotes:
1
DEFINITION NOT FOUND.