c - 如何在c中制作不同大小的数组?

标签 c arrays

<分区>

我将在 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');
}

Demo on ideone.

关于c - 如何在c中制作不同大小的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24407647/

相关文章:

arrays - 在 kotlin 中初始化数组

c++ - std::tr1::array 编译错误

sql - 读取 JSON 数组作为 SQL 表列之一

c - strcpy 传递初始化的空指针 c

c - 反转二进制文件会向其添加位而不是反转

c - 我在C语言中面临着一个非常尴尬的局面

c - 指向数组指针的指针

php - 基于数组键创建动态命名的变量

c# - TextWriter.ReadToEnd 与 Unix wc 命令

在堆上创建一个数组,typedef 指向它的指针,段错误 : 11 when accessing it