gpt4 book ai didi

c - 为什么 C 中可以有一个指向字符串数组的指针

转载 作者:行者123 更新时间:2023-12-02 09:10:51 25 4
gpt4 key购买 nike

为什么

char *names [] = {"hello", "Jordan"};

工作正常

但这并不

char names [] = {"hello", "Jordan"};

如果有人能向我解释这一点,我将不胜感激,谢谢:)。

最佳答案

这里

char *names [] = {"hello", "Jordan"};

nameschar 指针数组,即它可以保存指针,即 names 每个元素本身就是一个 char 数组。但这里

char names [] = {"hello", "Jordan"};

names 只是一个 char 数组,即它只能容纳单个 char 数组,例如 "hello" 而不能容纳多个。

在第二种情况下,例如

int main(void) {
char names[] = {"hello", "Jordan"};
return 0;
}

当你编译时(建议你使用-Wall -pedantic -Wstrict-prototypes -Werror标志进行编译),编译器清楚地说

error: excess elements in char array initializer

这意味着在这种情况下不能有多个字符数组。正确的是

char names[] = {'h','e','l','l','o','\0'}; /* here names is array of characters */

编辑:-如果 names 的语法如下所示,则更有可能

char names[] = { "hello" "Jordan" }; /* its a valid one */

然后这里 helloJordan 都加入并成为单个字符数组 helloJordan

char names[] = { "helloJordan" }; 

关于c - 为什么 C 中可以有一个指向字符串数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52370821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com