gpt4 book ai didi

c - C中每行具有不同大小的二维数组

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

我想知道是否可以在 C 中创建具有不同线条大小的二维数组。

我知道二维数组是一个存储其他数组的数组。但是如果数组大小不同怎么办?像这样(“T”是数组的可用位置)

   0  1  2  3  4
0 T T
1 T T T T T
2 T T T
3 T T T T

如果可以,怎么做?就像普通的二维数组一样?

最佳答案

不同大小的数组的数组在 C 中是可能的。简单地说,它们不是二维数组,而是数组或指针。您会在 answer 中找到更多关于差异的信息来自 C 标签常见问题解答。

@vahero 展示了如何动态分配它,但也可以使用静态或自动存储:

char row0[] = "TT";      // size 3 because of the terminating null...
char row1[] = "TTTTT";
char row2[] = "TTT";
char row3[] = "TTTT";
char* array[] = { row0, row1, row2, row3};

或者没有额外的变量标识符:

char *arr[] = { 
(char[]){ 'T', 'T', 0 },
(char[]){ 'T', 'T', 'T', 'T', 'T', 0 },
(char[]){ 'T', 'T', 'T', 0 },
(char[]){ 'T', 'T', 'T', 'T', 0 },
};

然后您可以照常使用:

for (int i=0; i<sizeof(arr)/sizeof(arr[0]); i++) {
for(int j=0; arr[i][j] != '\0'; j++) {
printf("%c ", arr[i][j]);
}
printf("\n");
}

关于c - C中每行具有不同大小的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48581037/

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