我开始学习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