【发布时间】:2013-03-10 16:16:03
【问题描述】:
我认为这个问题是this SO answer 的延伸。假设我有以下代码:
#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 不应该期望一个指向 只读 文字的指针作为参数吗?然而,传递的是只读文字堆栈上的 copy。
即使这会产生正确的结果,这样做是否 100% 正确?如果func() 接受char [] 而不是char *,是否会提高代码的可读性?
【问题讨论】: