EDIT2:我试图在这里估算我的实际代码,但显然我错过了一些东西,因为这段代码并没有产生我在实际代码中得到的警告。我一直关闭这个,直到我能弄清楚这种差异。
指向2D数组中的数组(行)的语法是什么,如下所示?那么如何使用行指针访问其中的各个元素?
int arr[3][4] =
{
{0, 1, 2, 3},
{4, 5, 6, 7},
{8, 9, 10, 11},
};
编辑:
如果我这样做
int const * pRow = arr[1];
我收到编译器警告
warning C4047: '=': 'const int *' differs in levels of indirection from 'const int (*)[4]'
是否有"权利"这样做的方法,除了用强制转换强迫它?
答案 0 :(得分:2)
arr[m]
是int
的数组,并且作为所有数组,它自然地衰减到指向其第一个元素的指针。现在arr[m]
的第一个元素的类型是什么(即arr[m][0]
)?这是int
对吧?因此arr[m]
衰减到指向int
的指针,即int*
。
这意味着您可以执行类似
的操作int *ptr_to_arr_1 = arr[1];
您可以将ptr_to_arr_1
用作任何其他数组或指针。因此要访问第二个元素ptr_to_arr_1[1]
,它与arr[1][1]
相同。
答案 1 :(得分:0)
您可以使用此int * ptr_to_row=arr[row_no];