C中指针变量的数组初始值设定项

Geo*_*ton 1 c

函数不能返回数组,只能返回指向数组的指针.所以我尝试这样做:

int *arr = {-1, -1};
Run Code Online (Sandbox Code Playgroud)

这是有效的语法吗?我得到了编译器的警告.如果没有,是否有更好的方法将指针变量设置为数组而不进行循环?

hac*_*cks 6

不.这不是有效的语法.可以是指向复合文字的指针的有效语法是

int *arr = (int []){-1, -1};  // Valid only in C99 and latter
Run Code Online (Sandbox Code Playgroud)

如果你想返回一个数组然后返回一个指向它的指针;

int *arr = malloc(sizeof(*arr)*2);
....
return arr;
Run Code Online (Sandbox Code Playgroud)

  • c99中的有效声明可以是`int*arr =(int*){ - 1,-1};` (2认同)
  • @GeorgeNewton你可以使用`memcpy(arr,(int []){-1,-1},sizeof(int)*2);`但是如果你想从函数返回,你仍然必须使用malloc来分配内存. (2认同)