在 char
数组中,您需要有 2 个 []
。其中一个用于存储数组索引号,另一个用于存储该索引的值:
char u[1][50];
strcpy(u[0],"test");
strcpy(u[1],"test 2");
printf("%s \n",u[1]);
但是,在 int
数组中,您只需要一个 []
。
是为了数组索引号还是为了值?
不管这个问题的答案是什么……为什么没有 2 个 []
?
int z[100];
z[0] = 1;
z[1] = 2;
printf("%d \n",z[1]);
为什么char
数组必须“完全负责”,而int
数组却不需要“完全负责”?
为什么有两个标准?
也许您不需要对数组“完全负责”?
也许数组的索引号被认为是默认的、有机的和免费的东西?
那么在这种情况下,对于 char
数组,为什么需要两个 []
?
最佳答案
你不需要两个[]
:
int main() {
char u[50];
strcpy(u, "test");
printf("%s \n", u);
}
只是字符串是由指向字符的指针表示的,所以传递一个char
是行不通的。无论如何,您都尝试过,然后将字符串的定义更改为多维 char
数组。这是多余的,当您这样做时会导致问题:
char u[1][50];
strcpy(u[1],"test 2");
这是未定义的行为,因为第一个数组索引必须是 0
。
也许你的困惑来自与int
的比较。如果要打印一个 char
,请使用 %c
格式说明符(然后传递一个 char
,而不是 char*
)。如果你这样做,它就像 int
示例一样:
int main() {
char z[100];
z[0] = '1';
z[1] = '2';
printf("%c \n", z[1]);
}
关于c - 为什么 "char array"需要两个 "[]"而 "int array"需要一个 "[]"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58095948/