c - 为什么 "char array"需要两个 "[]"而 "int array"需要一个 "[]"?

标签 c arrays char int

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/

相关文章:

c - 指针作为调用 scanf 的函数的参数

python - 在 2d numpy 数组中获取邻居的有效方法

c++ - 使用字符指针拆分单词中的句子

kotlin - 运算符 '==' 不能应用于 'Boolean' 和 'Char'

c - 如何构建支持超过 223 列鼠标输入的 Curses 程序

将 PSTR 转换为 PWSTR 并转义某些字符

c - 为什么我的 C 代码不产生输出?

c - 为什么我的子字符串前有奇怪的字符?

javascript - 在 IE 中获取多维 javascript 数组的值

c - 在 C 中,为什么不能像将字符串值分配给 char* 一样将整数值分配给 int*?