表达式分配了多少空间
int *a[10];
如果大小int
是4
和大小int pointer
是2
。
选项为 2、4、20、40
我不擅长指点,请帮助我。
在声明int *a[10]
中,a
是指向 10 大小的 int 的指针数组,因此 size = sizeof (int*) * 10
。
您可以应用 sizeof 运算符来打印其大小:
printf("sizeof = %zu", sizeof(a));
如果假设在某些系统中指向 int 的 sizeof 指针为 2(如您所说),则 size 将为 20 个字节。
这将分配一个由 10 个整数指针组成的数组,如果一个 int 指针的大小为 2,这将占用 20 个字节。
用printf ("sizeof (a)= %d\n", sizeof (a));
如果 sizeof *int == 2(像旧的 DOS 机器),它应该打印“20”,如果 sizeof *int == 4,它应该打印“40”。
示例(32 位 MSVC 编译):
#include <stdio.h>
int
main () {
int * a[10];
printf ("sizeof(int)=%d, sizeof (*int)=%d, sizeof (a)=%d\n",
sizeof(int), sizeof (int*), sizeof (a));
return 0;
}
sizeof(int)=4,sizeof(*int)=4,sizeof(a)=40