gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:06:34 25 4
gpt4 key购买 nike

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_to_arr_1[1],它与 arr[1][1] 相同。

关于c - 指向 C 中二维数组中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42443973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com