指向初始化整数数组的指针

时间:2018-03-30 19:35:01

标签: c pointers

我试图一次声明一个指向初始化int数组的指针(gcc 5.2.0,gnu99)

这是有效的

int a1[] = {1, 2, 3, 4, 5};
int (*a)[] = &a1;

我试过这个并不是

int *why = (int p[2]) {1,2};

../src/gps/gps.c:399:18: error: expected ')' before 'p'
  int *why = (int p[2]) {1,2};
                  ^

int (*b)[5]= (int(*)[5])&({11,2,3,5,6});

../src/gps/gps.c:400:31: warning: left-hand operand of comma expression has no effect [-Wunused-value]
  int (*b)[5]= (int(*)[5])&({11,2,3,5,6});
                           ^
int (*cc)[] = &{1, 2, 3, 4, 5}
../src/gps/gps.c:402:17: error: expected expression before '{' token
  int (*cc)[] = &{1, 2, 3, 4, 5}
                 ^

我想念的是什么?

1 个答案:

答案 0 :(得分:1)

以下是定义这些内容的正确方法:

int *why = (int [2]) {1,2};
int (*a)[5]= &((int []){11,2,3,5,6});

创建复合文字时,请在其前面添加类似于类型转换的内容。

第一行不起作用,因为你试图在演员表中放置一个变量名,第二行不起作用,因为你没有把演员表放在大括号前面。