C编程: arrays and pointers

标签 c pointers

<分区>

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 arraysizeof pointer 时,当您尝试分配给数组(不会编译)时,等等。

int *tab[4];

声明一个包含四个指向 int 的指针的数组。我看不出这与数组和指针之间的混淆有什么关系。

关于C编程: arrays and pointers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13552140/

相关文章:

c - 如何在 C 中将数组转换为二维矩阵而不分配额外的内存?

c++ - 此 matlab 代码的 C++ 等效项是什么(fread matlab 与 fread C/C++)?

c - 为什么我无法在 Raspberry Pi 上使用 D2XX 访问我的 FTDI 设备?

c# - 在 C 中查找事件用户目录的路径

c - C 中的指针及其值

c - 为什么在这种情况下 NULL 取消引用不会导致未定义的行为

c++ - 指向类的私有(private)数据成员的指针

c++ - 在具有大量内存的 super 计算机中如何实现指针?

c++ - 动态长度的字符数组

c - 多个 GCC 版本导致多个堆,导致崩溃?