#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、数组空间大小为数组类型所占字节数*数组元素数
本文通过一个C语言程序实例,详细解析了不同数据类型及结构在64位系统中的内存占用情况,包括指针、数组、字符串等,揭示了指针占用空间与系统位数的关系及数组空间大小的计算方式。
3187

被折叠的 条评论
为什么被折叠?



