c - 从一个方法返回多个 char *

标签 c

我想从一个方法返回多个字符*:

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/

相关文章:

c - Epoll vs Libevent for Bittorrent like application

C - 从缓冲区中提取数据时出现问题。可能与字节顺序有关

如果可以的话,完成此代码 (c)

c - 编译时访问的文件列表

c - 链表节点内存分配

C 如何求结构体数组的长度

将 int 转换为 uint8_t

c - 传递参数使指针来自整数而不进行强制转换

将 C 代码转换为 x86-64 汇编

c - 为什么在进行远程过程调用时 UDP 优于 TCP?