-4

表达式分配了多少空间

int *a[10];

如果大小int4和大小int pointer2

选项为 2、4、20、40

我不擅长指点,请帮助我。

4

3 回答 3

2

在声明int *a[10]中,a是指向 10 大小的 int 的指针数组,因此 size = sizeof (int*) * 10

您可以应用 sizeof 运算符来打印其大小:

printf("sizeof = %zu", sizeof(a)); 

如果假设在某些系统中指向 int 的 sizeof 指针为 2(如您所说),则 size 将为 20 个字节。

于 2013-10-28T14:14:42.753 回答
2

这将分配一个由 10 个整数指针组成的数组,如果一个 int 指针的大小为 2,这将占用 20 个字节。

于 2013-10-28T14:15:48.127 回答
1

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

于 2013-10-28T14:14:51.107 回答