当我将字符串传递给函数时,有时我会使用
char *functionname(char *name[256])
有时我在没有指针的情况下使用它(例如:
char functionname(char name[256])
我的问题是,什么时候需要使用指针?我经常编写没有指针的程序并且它可以工作,但有时却没有。
最佳答案
将 C 字符串传递给函数的公认约定是使用指针:
void function(char* name)
当函数修改字符串时,你还应该传入长度:
void function(char* name, size_t name_length)
你的第一个例子:
char *functionname(char *name[256])
传递一个指向字符串的指针数组,这根本不是您所需要的。
你的第二个例子:
char functionname(char name[256])
传递一个字符数组。这里数组的大小无关紧要,参数无论如何都会衰减为指针,所以这等同于:
char functionname(char *name)
另见 this question有关 C 中数组参数的更多详细信息。
关于c - 将字符串传递给 C 中的函数 - 带或不带指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17131863/