在 C 中初始化已知大小的 **char 数组

Initialize **char array with known size in C

我想初始化一个字符串数组,使对象的类型为 **char。

我知道我可以通过以下方式做到这一点:


char **my_array = malloc( 3 * sizeof(char*));
for (int i = 0; i < (3); i++) {
   my_array[i] = malloc(10 * sizeof(char));
}

sprintf(my_array[0], "first");
sprintf(my_array[1], "second");
sprintf(my_array[2], "third");

但是看起来真的很麻烦,尤其是因为字符串是在我编译之前设置的。有没有办法获得(特别是 char ** 类型)语法更像:

char ** my_array = {"first", "second", "third"};

所以我有 属性: printf(my_array[0]); returns first?

假设字符串是固定的,您需要一个 const char *:

的数组
const char *my_array[] = {"first", "second", "third"};

char ** my_array 是指向 char 指针的指针,它不再分配任何内存。如果您从一开始就知道您只有三个字符串,并且期望只有最多 10 个字符的字符串,则可以静态分配您的数组: char my_array[3][10]