我将在c中有一个数组数组,因为主数组中的每个数组都有一个特定的大小.例如:{{a,b,c},{a},{a,d}}问题是我不想使用堆内存并使用"malloc",它也不应该是任何浪费的内存.例如,我不想使用以下代码:
char myArrays[][3] = {
{a,b,c},
{a,null,null},
{a,d,null}
}
Run Code Online (Sandbox Code Playgroud)
如果你想创建一个不同大小的数组数组,你需要创建一个指针数组,如下所示:
char *myArrays[] = {
(char[]){'a','b','c'},
(char[]){'a'},
(char[]){'a','d'}
};
Run Code Online (Sandbox Code Playgroud)
您不需要使用空字符"填充"数组.
请注意,这种方法不能提供一种简单的方法来找出内部数组的确切长度:sizeof运算符不起作用.如果你想知道内部数组的长度,可以添加某种终止条目(比方说,'\0's)或添加一个长度数组,如下所示:
size_t myLengths[] = {3, 1, 2};
Run Code Online (Sandbox Code Playgroud)
现在您可以像这样迭代数组数组:
for (int i = 0 ; i != 3 ; i++) {
for (int j = 0 ; j != myLengths[i] ; j++) {
putchar(myArrays[i][j]);
}
putchar('\n');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1037 次 |
| 最近记录: |