我開始學習C,並且我對c字符串指針有點困惑。c字符串指針
int argc = 0;
const char *str[] = { "hello" , NULL, NULL };
str[argc++] = "nice!";
str[argc++] = "abc";
str[argc++] = "def"
send_args(argc, str);
//the prototype/header : int send_args(int argc, const char **args);
因爲send_args函數不會修改傳遞的str的值,那些操作是否有效? 因爲我不想做這樣的事情:
int i, argc = 0;
char *str[3];
str[argc++] = strdup("nice!");
str[argc++] = strdup("abc");
str[argc++] = strduo("def)"
send_args(argc, str);
for (i = 0; i< argc; i++)
if (str[i]) { free(str[i]); str[i]=NULL; }
在此先感謝球員。
你打算用'send_args()'做什麼?我不確定,如果你的數組被正確初始化並且它可以保存所有的值。我認爲編譯器可能會優化最後兩個NULL,並且可能會寫入未引用的內存。 – 2013-03-11 12:02:24
不,編譯器不能優化數組元素,原因正是這個原因:數組的大小是程序數據的相關部分。 – Jens 2013-03-11 12:07:33