我觉得这个问题是this SO answer的扩展。说我有以下代码:C函数参数char * vs char []
#include <stdio.h>
#include <string.h>
void func(char *str)
{
strcpy(str, "Test");
}
int main()
{
char testStr[20] = "Original";
func(testStr);
printf("%s\n", testStr); /* Prints "Test" followed by a new-line */
return 0;
}
按照我的理解,不应该指望func
一个指针只读文字作为参数?而正在传递的是只读文本的堆栈上的副本。
即使这会产生正确的结果,是否100%正确?如果func()
接受char []
而不是char *
,它会提高代码的可读性吗?
除了可怕的安全漏洞.. – 2013-03-21 08:39:02
@KierenJohnstone:好吧,没有用户输入;) – NPE 2013-03-21 08:39:39
@KierenJohnstone,抛开安全漏洞。我刚刚打了一个快速的SSCCE。 – 2013-03-21 08:40:04