假设我有一个二维数组int [3] [4] 如果typedef定义为
typedef int array[4];
array *ptr = m;
这是什么意思?它是指向4个元素的数组的指针。还是4个指针的数组?
当我们cout << ptr or cout << *ptr
时,它会打印相同的地址。怎么可能?
答案 0 :(得分:0)
ptr是指向int类型的四个元素的数组的指针。 m是一个由3个元素组成的数组(由int类型的四个元素组成的数组)。为了给你一张图片 - m是一个由3个数组元素组成的数组。这就是将ptr初始化为m的原因 - 没有问题,因为&#39; m&#39;作为一个数组被隐式转换为指向该数组中第一个元素的指针。
ptr是指向元素数组的指针。这样就会打印出指针。当使用* ptr时 - 你得到一个数组,它再次被隐式转换为指向数组的第一个元素的指针,这也是相同的起始点 - 所以你得到相同的值。
当一切从同一点开始时,你得到的是相同的值。当指针上有++时,事情将开始区分。我会留下你的。
答案 1 :(得分:0)
查看clockwise/spiral rule。读完之后,您可以将声明读作指向类型别名array
的指针,换句话说是指向四个整数数组的指针。
答案 2 :(得分:0)
根据&#34;顺时针/螺旋规则&#34; ptr是一个指向4 int。
数组的指针