<分区>
Possible Duplicate:
Is array name a pointer in C?
如果我定义:
int tab[4];
tab 是一个指针,因为如果我显示 tab:
printf("%d", tab);
上面的代码将显示内存中第一个元素的地址。
这就是为什么我想知道为什么我们不定义如下数组:
int *tab[4];
因为 tab 是一个指针。
感谢您的帮助!
<分区>
Possible Duplicate:
Is array name a pointer in C?
如果我定义:
int tab[4];
tab 是一个指针,因为如果我显示 tab:
printf("%d", tab);
上面的代码将显示内存中第一个元素的地址。
这就是为什么我想知道为什么我们不定义如下数组:
int *tab[4];
因为 tab 是一个指针。
感谢您的帮助!
最佳答案
tab is a pointer
不,tab
是一个数组。一个 int[4]
具体来说。但是当你将它作为参数传递给函数时(以及在许多其他情况下),数组将转换为指向其第一个元素的指针。您可以看到数组和指针之间的区别,例如,当您调用 sizeof array
与 sizeof pointer
时,当您尝试分配给数组(不会编译)时,等等。
int *tab[4];
声明一个包含四个指向 int
的指针的数组。我看不出这与数组和指针之间的混淆有什么关系。
关于C编程: arrays and pointers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13552140/