从方法返回多个char *

时间:2014-09-12 07:05:51

标签: c

我想从方法中返回多个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;

1 个答案:

答案 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。