Has*_*tar 6 c c++ arrays pointers multidimensional-array
我正在学习指针:
int x[10];
int *p = &x
Run Code Online (Sandbox Code Playgroud)
这将使指针类型int成为第一个元素.所以,如果我有2D数组,我需要使用双指针:第一个指针指向数组的第二个维度.这意味着 :
int x[3][4] = {{1,2,3,4},{5,6,7,8},{9,9,9,9}};
Run Code Online (Sandbox Code Playgroud)
当我想指出它时,我必须像这样声明第二维的大小,对吧?
int *p[4] = x;
Run Code Online (Sandbox Code Playgroud)
或者存在通过键入另一种方式:int **p; ?
和int *p[4]是整数指针这需要的阵列4 * (sizeof(int*)),是吗?
这会使指针类型(int)成为第一个元素..
No.
&x是数组的地址,x属于类型int (*)[10],您不能将其分配给int *类型.两者都是不兼容的类型.
所以,如果我有2D数组,我需要使用双指针:第一个指针指向数组的第二个维度.
号
在表达式中,阵列转换为指针到它的第一元素时除外的操作数sizeof和一元&运算符.因此,在这种情况下的类型x将int (*)[4]转换后.你需要一个指向4 int的数组而不是4个指针数组的指针
int (*p)[4] = x;
Run Code Online (Sandbox Code Playgroud)