我想从一个方法返回多个字符*:
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;
?
最佳答案
正如 Oli 所提到的,您只有两个元素的空间,因此您不能:
*(ret+2) = xxx;
因为这是写入不存在的“第三”元素。你可以分配三个:
char **ret = malloc(sizeof(char*) * 3);
至于你问题的答案......
Do I need *(ret + 2) = "\0"; Or should it be *(ret + 2) = NULL;?
...假设您已经分配了正确数量的空间
那我会用...
*(ret+2) = NULL
... 因为这个原因:
as NULL 表示指针的值为零而“\0”不是,但实际上(是一个文字)指向某个地址,该地址不是 NULL,但包含一个值为零的 char。
关于c - 从一个方法返回多个 char *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25802633/