我想从方法中返回多个char *:
char** test1() {
char **ret = malloc(sizeof(char*) * 3);
*ret = "aaa";
*(ret + 1) = "bbb";
// *(ret + 2) = "\0"; //needed?
return ret;
}
我需要*(ret + 2) = "\0";
还是*(ret + 2) = NULL;
?
答案 0 :(得分:1)
正如Oli所提到的,你只有两个元素的空间,因此你不能这样做:
*(ret+2) = xxx;
因为这是写第三个"第三个"元素,不存在。你可以分配三个:
char **ret = malloc(sizeof(char*) * 3);
关于你问题的答案......
我需要*(ret + 2)=" \ 0&#34 ;;或者应该是*(ret + 2)= NULL;?
......鉴于你已经分配了适当的空间
然后我会用...
*(ret+2) = NULL
...因此:
as NULL表示指针的值为零," \ 0"不,但实际上(是一个文字)指向一些非NULL的地址,但包含一个值为零的char。