C++ 数组的 auto 和 decltype

当使用数组作为一个 auto(参见 2.5.2节,第61页)变量的初始值时,推断得到的类型是指针而非数组:

int ia[]= {0,1,2,3,4,5,6,7,8,9}; // ia是一个含有10 个整数的数组
auto ia2(ia);                    // ia2 是一个整型指针,指向 ia 的第一个元素
ia2 = 42;                        // 错误:ia2是一个指针,不能用int值给指针赋值

当使用 decltype 关键字(参见 2.5.3 节,第 62 页)时上述转换不会发生,decltype(ia) 返回的类型是由10个整数构成的数组:

decltype(ia) ia3={0,1,2,3,4,5,6,7,8,9}; // ia3是一个含有10个整数的数组
ia3 = p;                               // 错误:不能用整型指针给数组赋值
ia3[4]= i;                             // 正确:把i的值赋给 ia3 的一个元素




《C++ Primer》 P105

posted @ 2024-09-21 14:42  double64  阅读(24)  评论(0)    收藏  举报