gpt4 book ai didi

C如何根据地址移动二维数组

转载 作者:行者123 更新时间:2023-11-30 19:36:03 24 4
gpt4 key购买 nike

我试图弄清楚如何将二维数组作为一维数组进行循环。由于二维数组会占用连续的内存,有没有办法通过改变索引4个字节来将二维数组作为一维数组进行寻址。我假设一个整数数组。有人可以举个例子吗?我尝试了以下方法,但不起作用:

for (int i = 0; i < 2; i++){
for (int j = 0;j < 2; j++){
z[i][j] = count;
count++;
}
}

for (int i = 0; i < 4; i++)
printf("%d\n", z[i]);

最佳答案

二维数组可以在单个循环中迭代,如下所示:

#include <stdio.h>

int main()
{
int a[2][2], *p;
a[0][0] = 100;
a[0][1] = 200;
a[1][0] = 300;
a[1][1] = 400;

p = &a[0][0];

while(p!=&a[0][4])
printf("%d\n", *p++);

return 0;
}

请记住,数组索引只是距数组第一个元素的偏移量,因此 a[0][3]a[1][ 之间没有真正的区别1] - 它们都引用相同的内存位置。

关于C如何根据地址移动二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41731474/

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