C编程:数组和指针

Mat*_*hew 0 c pointers

可能重复:
数组名是C中的指针吗?

如果我定义:

int tab[4];
Run Code Online (Sandbox Code Playgroud)

tab是一个指针,因为如果我显示选项卡:

printf("%d", tab);
Run Code Online (Sandbox Code Playgroud)

上面的代码将显示内存中第一个元素的地址.

这就是为什么我想知道为什么我们不定义如下的数组:

int *tab[4];
Run Code Online (Sandbox Code Playgroud)

因为tab是一个指针.

感谢您的任何帮助!

Dan*_*her 6

tab是一个指针

不,tab是一个数组.一个int[4]具体的.但是当你将它作为参数传递给函数(以及许多其他上下文中)时,数组将转换为指向其第一个元素的指针.您可以在调用时看到数组和指针之间的区别sizeof array vs.时sizeof pointer,当您尝试分配给数组(不会编译)时,等等.

int *tab[4];
Run Code Online (Sandbox Code Playgroud)

声明一个包含四个指针的数组int.我不知道这与数组和指针之间的混淆有什么关系.