c - 将字符串传递给 C 中的函数 - 带或不带指针?

标签 c string function

当我将字符串传递给函数时,有时我会使用

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/

相关文章:

c - sys/socket 缺少 msgdr : msg_control, msg_controllen、msg_flags 的成员

python - 正则表达式检测双花括号之间的文本

Java - 按数字和字母分割字符串

javascript - 为什么 Angular Controller 需要 "$scope"

c - C中的输入数据验证

c - 套接字 :client waiting even after recieving last byte

c# - 字符串的按位运算 - 1440 个字符长度

PHP:函数将大量数组作为参数传递

javascript - 如何在递归函数中跳出 for 循环并在 Javascript 中返回?

c - 访问结构内的数组元素(它是结构数组的一部分)(在 C 中)