若有定义语句:
int a [2][3],(*p)[3],*q[3];,则以下赋值语句正确的是( )
答案:A、C
#include <iostream> using namespace std; int main(){ int a[2][3]; int (*p)[3];//数组指针(数组指针,指的是数组名的指针,即数组首元素地址的指针。即是指向数组的指针) int *q[3];//指针数组 cout << typeid(a).name() << endl; //A2_A3_i 即int [2][3] cout << typeid(p).name() << endl; //PA3_i 即int (*)[3] cout << typeid(q).name() << endl; //A3_Pi 即int* [3] cout << typeid(&a[1]).name() << endl;//PA3_i 即int (*)[3] cout << (a == &a[0]) << endl;//1 p = a;//二维数组名赋给数组指针,等价于p = &a[0] //q = a;//q是指针数组的数组名,是一个指针常量,无法修改 p = &a[1];//a[1]是一个一维数组(首元素)的地址,取地址就是数组指针(数组首元素地址的指针),类型与p一致 //q = &a[1];//q是指针数组的数组名,是一个指针常量,无法修改 }