据我了解,当我们使用指针创建数组时:
int **ptr = new int*[2];
for(int i=0;i<2;i++)
{
ptr[i] = new int[3];
}
它看起来像这样: 但是当我们创建一个静态数组时,它会变成这样:
int arr[2][3]={1,2,3,4,5,6);
现在,如果我们运行以下代码:
cout<<"Address of arr = "<<&arr;
cout<<"arr is pointing to = "<<*arr;
代码展示了同一个地址,这意味着arr是一个指向它自身的指针,这看起来非常令人困惑,因为如果数组是双重指针,那么它怎么能指向它自己。
很明显编译器在幕后做了一些奇怪的事情。 请问您能否解释一下这是如何工作的。
arr
不是指针。arr
是一个数组。数组不是指针。指针不是数组。自由就是奴隶。 - Kerrek SB[]
运算符) - DarthRubik[]
运算符,严格来说(至少在 C 中),数组是没有[]
运算符的! - Steve Summit