<分区>
我将在 c 中创建一个数组数组,因为主数组中的每个数组都有特定的大小。例如: { {a,b,c}, {A}, {广告} } 问题是我不想使用堆内存并使用“malloc”,也不应该是任何浪费的内存。例如,我不想使用以下代码:
char myArrays[][3] = {
{a,b,c},
{a,null,null},
{a,d,null}
}
<分区>
我将在 c 中创建一个数组数组,因为主数组中的每个数组都有特定的大小。例如: { {a,b,c}, {A}, {广告} } 问题是我不想使用堆内存并使用“malloc”,也不应该是任何浪费的内存。例如,我不想使用以下代码:
char myArrays[][3] = {
{a,b,c},
{a,null,null},
{a,d,null}
}
最佳答案
如果你想做一个不同大小的数组,你需要做一个指针数组,像这样:
char *myArrays[] = {
(char[]){'a','b','c'},
(char[]){'a'},
(char[]){'a','d'}
};
您不需要用空字符“填充”您的数组。
请注意,此方法无法提供一种简单的方法来找出内部数组的确切长度:sizeof
运算符将不起作用。如果您想知道内部数组的长度,可以添加某种终止条目(例如,'\0'
s)或添加一个长度数组,如下所示:
size_t myLengths[] = {3, 1, 2};
现在您可以像这样迭代数组的数组:
for (int i = 0 ; i != 3 ; i++) {
for (int j = 0 ; j != myLengths[i] ; j++) {
putchar(myArrays[i][j]);
}
putchar('\n');
}
关于c - 如何在c中制作不同大小的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24407647/