我覺得這個問題是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