#include <stdio.h>
int main(void)
{
int a, b, c, d, d2, e, f, g;
char str[100];
int arry[100];
char *string="abc";
int *p = malloc(100);
char *p2 = str;
a = sizeof(str);
b = sizeof(p);
c = sizeof(arry);
d = sizeof(string);
d2 = sizeof("abc");
e = sizeof(&str[0]);
f = sizeof(&p);
g = sizeof(p2);
printf("a = %d, b = %d, c = %d, d = %d, d2 = %d, e = %d, f = %d, g = %d\n", a, b, c, d, d2, e, f, g);
return 0;
}
在64位系统中,编译后执行,输出结果为:
a = 100, b = 8, c = 400, d = 8, d2 = 4, e = 8, f = 8, g = 8
总结:
1、任何指针的所占字符空间大小均为系统位数/8
2、数组空间大小为数组类型所占字节数*数组元素数