zea*_*eal 6 c c++ arrays pointers
我完全理解什么是" int *p[3]"(p是一个3指针的数组,这意味着我们可以通过将内存分配为不同行的大小来拥有3个不同行的任意数量的行).
我的困惑在于" int (*p)[3]"这意味着什么?它是否像"p"存储int或其他内容的3个连续内存的地址?
请澄清以及如何在程序中使用它们来区分它们.
非常感谢提前.
@revised
Run Code Online (Sandbox Code Playgroud)
很抱歉提出重复的问题.我并没有深入探究我的疑问.但我怀疑仍然是新手程序员.我浏览了两个Q/A C指针指向数组/指针数组消歧的页面
和
第二个链接部分清除了疑问,所以消除我的疑问,请参考堆栈和堆中的上述问题解释:例如
int *p[3]; // (1)
Run Code Online (Sandbox Code Playgroud)
需要12(3*4bytes)个字节的堆栈,而堆将取决于运行时.现在为
int (*p1)[3]; //(2)
Run Code Online (Sandbox Code Playgroud)
(2)使用"new"将其中一个作为
p1 = new int[7][3]; // (3)
Run Code Online (Sandbox Code Playgroud)
给出了链接int(*p)[4]的答案之一?; 现在我的问题是因为"int(*p1)[3]; //(2)"是一个指向3个int数组的指针,因此在编译时p1将占用多少内存,因为eq(3)也可以被替换为
p1 = new int[n][3]; // (3) where n is an integer
那么呢?
请解释.
oua*_*uah 16
int *p[3]; // type of p is int *[3]
Run Code Online (Sandbox Code Playgroud)
声明p为数组3 int *(即三个数组int *)
和
int (*p)[3]; // type of p is int (*)[3]
Run Code Online (Sandbox Code Playgroud)
声明p为指向数组3的int指针(即指向三个数组的指针int)