Ani*_*amy 4 c arguments function
我认为这个问题是这个SO答案的延伸.说我有以下代码:
#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;
}
Run Code Online (Sandbox Code Playgroud)
根据我的理解,不应该func
期望指向只读文字的指针作为参数?然而,传递的是只读文字堆栈上的副本.
即使这会产生正确的结果,这样做是否100%正确?难道提高代码的可读性,如果func()
接受char []
,而不是char *
?
你的理解是正确的.代码很好.
另一方面,以下不是:
void func(char *str)
{
strcpy(str, "Test");
}
int main()
{
char* testStr = "Original";
func(testStr);
}
Run Code Online (Sandbox Code Playgroud)
这会尝试修改字符串文字,从而导致未定义的行为.
至于可读性问题,这是主观的.