gpt4 book ai didi

c - 使用 typedef array 来声明一个数组

转载 作者:行者123 更新时间:2023-12-05 01:30:53 25 4
gpt4 key购买 nike

好吧,我目前正在研究二维数组,如果情况是这样,我对二维数组的维度感到困惑:

#define ROW 5
#define COL 10

typedef int arrint[COL]

它在主函数中声明如下:

arrint a2D[ROW]

二维数组是 a2D[5][10] 还是 a2D[10][5]

最佳答案

由于您已将 arrint 声明为一个 int[COL==10],并且 a2D 是其中 5 个的数组,因此您最终得到了等同于:

int a2D[5][10];

Typedef 很好用,但最好将 2D 数组定义为 2D 数组以避免混淆。在 C 中,二维数组作为行优先存储在内存中。阅读this发布一个很好的解释。数组在内存中的排列方式是第一行首先出现,然后是第二行,依此类推。每行由 COL 元素组成,因此定义它的方法是:

typedef int A2D[ROW][COL];
A2D a2d = {0}; // Declares 2D array a2d and inits all elements to zero

然后要访问第 i 行第 j 列的元素,请使用:

a2d[i][j]

这是一个示例程序:

#include <stdio.h>
#define ROW 5
#define COL 10
typedef int A2D[ROW][COL];

int main(int argc, char** argv)
{
A2D a2d = {0};
int r,c;

a2d[1][2] = 12;

for(r=0; r<ROW; r++)
{
printf("Row %d: ", r);
for(c=0; c<COL; c++)
printf("%2d ", a2d[r][c]);
printf("\n");
}
}

这会产生以下输出:

Row 0:  0  0  0  0  0  0  0  0  0  0 
Row 1: 0 0 12 0 0 0 0 0 0 0
Row 2: 0 0 0 0 0 0 0 0 0 0
Row 3: 0 0 0 0 0 0 0 0 0 0
Row 4: 0 0 0 0 0 0 0 0 0 0

关于c - 使用 typedef array 来声明一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43196391/

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