我正在使用C语言编写一些代码,并尝试理解指针和数组之间的关系。正如你可能知道的那样,如果我想创建数组,可以这样做:
char * arr = "abc";
或者
char arr[] = {'a','b', 'c'};
但是当我想要创建一个二维数组时,必须像这样完成
char arr[3][10];
为什么我试图将字符串加载到这个声明中时会崩溃。
char * names[3];
for ( int i = 0; i < 3; i++ ) {
printf("Enter name %d: ", i+1 );
scanf("%s", names[i]);
}
// print names
printf("\nEntered names are: \n");
for ( int i = 0; i < 3; i++ ) {
printf("%s\n", names[i] );
}
这应该是一个二维数组,因为数组本质上是指针。 你能解释一下吗? 谢谢。
char *names[3];
的崩溃情况实际上取决于你如何使用它。你用这个数组做了什么?这个数组应该解决什么问题? - Some programmer dudechar arr* = "abc";
。在这里,arr
是一个指针,而不是一个数组,字符串字面值"abc"
是一个数组。 - chux - Reinstate Monica