下面的代码可以工作,但是我被告知它没有用VisualC++ 2010的gcc 3.4.2编译,而且可能是非法的:
int ar1[]{0,1,2,3,4,5,6,7,8,9},
*ptr1 = ar1,
ar2[]{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18},
*ptr2 = ar2;显然,您需要对其进行一些修改才能工作(类似于此):
int ar1[]{0,1,2,3,4,5,6,7,8,9};
int *ptr1 = ar1;
int ar2[]{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18};
int *ptr2 = ar2;是那么回事吗?数组和指针不能一起声明吗?
(代码在QT + gcc 4.8上编译得很好)
发布于 2013-07-13 02:10:28
所述声明使用C++11初始化语法。从预C++11编译器的角度来看,它在语法上是不正确的.但是,如果在每个=之前添加一个{,那么它将成为普通且完全合法的C++98声明(以及C声明)。
在一个声明中使用多个声明器没有问题,即使将指针和数组声明器混合在一起也没有问题。如果愿意,可以将函数声明器添加到该组合中。唯一的限制是不能在其中嵌入函数定义。
https://stackoverflow.com/questions/17626176
复制相似问题