首页 > 试题广场 >

若有定义语句:int a [2][3],(...

[单选题]
若有定义语句:
int  a [2][3],(*p)[3],*q[3];,则以下赋值语句正确的是(      )
  • p=a;
  • q=a;
  • p=&a[1];
  • q=&a[1];

答案: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是指针数组的数组名,是一个指针常量,无法修改
}
编辑于 2019-08-24 18:46:53 回复(0)
A和C都是对的,放多选里去吧
发表于 2019-08-15 16:59:40 回复(0)