为下面的代码分配了多少空间?

时间:2013-10-28 14:12:51

标签: c pointers

表达式

分配了多少空间
int *a[10];

如果int的尺寸为4int pointer的尺寸为2

选项分别为2,4,20,40

我很擅长指点请帮助我。

3 个答案:

答案 0 :(得分:2)

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

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

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

如果在某些系统中假设指向int的指针是2(正如你所说的那样)那么大小将是20个字节。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

printf ("sizeof (a)= %d\n", sizeof (a));

编写一个小C程序

如果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