在 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]
我想初始化一个字符串数组,使对象的类型为 **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]