Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
指向C中二维数组中的数组_C_Arrays_Multidimensional Array - Fatal编程技术网

指向C中二维数组中的数组

指向C中二维数组中的数组,c,arrays,multidimensional-array,C,Arrays,Multidimensional Array,EDIT2:我试图在这里近似我的实际代码,但显然我遗漏了一些东西,因为这段代码没有生成我在实际代码中得到的警告。在我能找出不符点之前,我会关闭这个 原始问题 指向二维数组(如下图所示)中的数组(行)的语法是什么?那么,如何使用行指针访问其中的各个元素呢 int arr[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}, }; 编辑: 如果我这样做 int const * pRow = arr[1]; 我收到编译器

EDIT2:我试图在这里近似我的实际代码,但显然我遗漏了一些东西,因为这段代码没有生成我在实际代码中得到的警告。在我能找出不符点之前,我会关闭这个

原始问题 指向二维数组(如下图所示)中的数组(行)的语法是什么?那么,如何使用行指针访问其中的各个元素呢

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]'

除了强制使用强制转换外,还有“正确”的方法吗?

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\u to\u arr\u 1[1]
,它与
arr[1][1]
相同
arr[m]
是一个
int
数组,与所有数组一样,它自然衰减为指向其第一个元素的指针。那么
arr[m]
(即
arr[m][0]
)的第一个元素的类型是什么?这是一个
int
对吗?因此
arr[m]
衰减为指向
int
的指针,即
int*

这意味着你可以做类似的事情

int *ptr_to_arr_1 = arr[1];

您可以使用
ptr_to_arr_1
作为任何其他数组或指针。因此,要访问第二个元素,您可以使用
int*ptr\u to_arr\u 1[1]
,它与
arr[1][1]
相同
int*ptr\u to_row=arr[row\u no]

您可以使用此
int*ptr\u to\u row=arr[row\u no]

arr[n]
有什么问题?@SouravGhosh,指向
arr[n]
的变量的类型是什么?您的错误消息似乎与您提供的代码不一致。特别是,如果消息确实可归因于您所呈现的行,则表明
arr
被声明为具有
const
最终元素的三维数组。。这就是为什么您需要尝试创建一个。只有在编写
int const*pRow=arr
int const*pRow=&arr[1]
arr[n]
有什么问题?@SouravGhosh,指向
arr[n]
的变量的类型是什么?您的错误消息似乎与您提供的代码不一致。特别是,如果消息确实可归因于您所呈现的行,则表明
arr
被声明为具有
const
最终元素的三维数组。。这就是为什么您需要尝试创建一个。只有在编写
int const*pRow=arr
int const*pRow=&arr[1]请查看我修改过的问题。请查看我修改过的问题。在不解释常量的情况下尝试此操作会添加新警告,
警告C4090:“=”:不同的“常量”限定符
。另外,我应该能够有一个指向const数据的指针,即使数据不是const,这只是意味着我不能通过指针修改它。请阅读此处,在不解释常量的情况下尝试添加新警告,
警告C4090:“=”:不同的“const”限定符
。另外,我应该能够有一个指向const数据的指针,即使数据不是const,这只是意味着我不能通过指针修改它。请在这里阅读