我试图一次声明一个指向初始化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}
^
我想念的是什么?
答案 0 :(得分:1)
以下是定义这些内容的正确方法:
int *why = (int [2]) {1,2};
int (*a)[5]= &((int []){11,2,3,5,6});
创建复合文字时,请在其前面添加类似于类型转换的内容。
第一行不起作用,因为你试图在演员表中放置一个变量名,第二行不起作用,因为你没有把演员表放在大括号前面。