gpt4 book ai didi

c - 结构 'const char *x' 与 'char x[30]'

转载 作者:太空宇宙 更新时间:2023-11-04 05:24:01 24 4
gpt4 key购买 nike

您好,抱歉,我已经在这段代码上停留了一段时间,但两者似乎都能正常工作,我只是不太了解其中的区别。

struct faveThings{

const char *favFood;
const char *faveFriend;


};

struct dog{

const char name[20];
const char breed[20];
int height;
int weight;

struct faveThings dogFaves;

};

我可以完全理解 dog 结构,使用 'char name[20]' 对我来说完全有意义。但是对于 faveThings,我与 'char *favFood' 斗争,我知道这是一个指针,但是如果它只是一个 char,它怎么能保存一个字符串呢?它不应该是一个字符数组吗?

const char *favFood[20];

感谢您的帮助,我已经用头撞墙好几个小时试图找出不同之处。

最佳答案

favFood 不包含字符串。它指向某个地方。并且可以使它指向字符串中 的第一个字符。按照惯例,由于 c 字符串可以具有不同的长度,因此它们以 '\0' 字符结束。这样,即使您只有一个指向第一个字符的指针,您也可以找到字符串的末尾。

因此像 strlen 这样的库函数将使用指针从第一个字符转到每个后续字符,直到找到 NUL 字符。

const char *favFood[20]; 是完全不同的野兽。它是一个包含 20 个指针的数组。每个指针都可以指向不同的东西。

关于c - 结构 'const char *x' 与 'char x[30]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41613331/

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