我正在尝试构建一个字符串列表,我需要传递给期望char **
的函数
如何构建此阵列?我想传递两个选项,每个选项少于100个字符。
char **options[2][100];
options[0][0] = 'test1';
options[1][0] = 'test2';
这不编译。我究竟做错了什么?如何在C中创建2D字符数组?
答案 0 :(得分:21)
C字符串用双引号括起来:
const char *options[2][100];
options[0][0] = "test1";
options[1][0] = "test2";
重新阅读你的问题和评论,虽然我猜你真正想要做的是这样:
const char *options[2] = { "test1", "test2" };
答案 1 :(得分:9)
如何创建包含指向字符的指针的数组大小:
char *array_of_pointers[ 5 ]; //array size 5 containing pointers to char
char m = 'm'; //character value holding the value 'm'
array_of_pointers[0] = &m; //assign m ptr into the array position 0.
printf("%c", *array_of_pointers[0]); //get the value of the pointer to m
如何创建指向字符数组的指针:
char (*pointer_to_array)[ 5 ]; //A pointer to an array containing 5 chars
char m = 'm'; //character value holding the value 'm'
*pointer_to_array[0] = m; //dereference array and put m in position 0
printf("%c", (*pointer_to_array)[0]); //dereference array and get position 0
如何创建包含指向字符的指针的2D数组:
char *array_of_pointers[5][2];
//An array size 5 containing arrays size 2 containing pointers to char
char m = 'm';
//character value holding the value 'm'
array_of_pointers[4][1] = &m;
//Get position 4 of array, then get position 1, then put m ptr in there.
printf("%c", *array_of_pointers[4][1]);
//Get position 4 of array, then get position 1 and dereference it.
如何创建指向2D数组字符的指针:
char (*pointer_to_array)[5][2];
//A pointer to an array size 5 each containing arrays size 2 which hold chars
char m = 'm';
//character value holding the value 'm'
(*pointer_to_array)[4][1] = m;
//dereference array, Get position 4, get position 1, put m there.
printf("%c", (*pointer_to_array)[4][1]);
//dereference array, Get position 4, get position 1
为了帮助您理解人类应该如何阅读复杂的C / C ++声明,请阅读:http://www.programmerinterview.com/index.php/c-cplusplus/c-declarations/
答案 2 :(得分:4)
char **options[2][100];
声明一个size-2数组,其大小为100的指针数组,指向char
的指针。您需要删除一个*
。您还需要将字符串文字放在双引号中。
答案 3 :(得分:1)
我认为你原本打算做的只是制作一个只有字符的数组,而不是指针:
char options[2][100];
options[0][0]='t';
options[0][1]='e';
options[0][2]='s';
options[0][3]='t';
options[0][4]='1';
options[0][5]='\0'; /* NUL termination of C string */
/* A standard C library function which copies strings. */
strcpy(options[1], "test2");
上面的代码显示了两种不同的方法,用于设置内存中包含字符的字符值。