gpt4 book ai didi

char *filenames[1] 或 char *filenames 有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-04 08:20:46 26 4
gpt4 key购买 nike

我正在编写一个程序,它将文件名列表存储为字符串数组。当我将其声明为

char *filenames[1]

我没有错误......但是当我这样做时

char *filenames 

我遇到了一些错误。不在声明中,而是在以后使用中。例如,当我这样做时:

filenames[3]= (char*)malloc( strlen(line) + 1);//here ERROR is : Cannot assign char* to char.

但是对于带有 [1] 的第一个声明,一切都很好。我只是想知道它们之间有什么区别?

相信我,我试着在谷歌上寻找答案,但找不到关于这个案例的任何好的答案。

最佳答案

一开始,char *filenames 表示一个名为 filenameschar * 变量,而 char *filenames[1] 代表一组 char * 变量,只有一个元素。

从用法上来说,两者是一样的,但主要区别在于,第一个必须用作普通变量,第二个可以作为数组进行索引。

如果您只需要使用一个变量,请不要使用数组。如果不够小心,您可能会遇到使用越界索引的危险。

另请注意,please see this discussion on why not to cast the return value of malloc() and family in C. .

关于char *filenames[1] 或 char *filenames 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33518526/

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