2、定义如下一维数组:int a[5],*p=a;则下面描述错误的是:A.表达式p=p+1是合法的B.表达式a=a+1是合法的C.表达式p-a是合法的D.表达式a+2是合法的
2、定义如下一维数组:int a[5],*p=a;则下面描述错误的是:
A.表达式p=p+1是合法的
B.表达式a=a+1是合法的
C.表达式p-a是合法的
D.表达式a+2是合法的
参考答案和解析
B 解析:本题考核指针与数组的关系。对于选项A,由于在定义时指针p指向数组a[0],那么表达式“p=p+1”就是让指针p指向数组中的元素a[1],所以是合法的。对于选项C,数组名a代表该数组的首地址,指针p中存的也是地址,所以它们之间可以进行加减运算。对于选项D,数组名a代表该数组的首地址,那么表达式“a+2”代表的是数组元素a[2]的地址。对于选项B,由于数组名代表该数组的首地址,并且只能引用该地址而不能进行修改,所以是不合法的。
相关考题:
若有定义int a[9],+P=a;,则P+5表示( )。A.数组元素a[5]的值B.数组元素a[5]的地址SXB 若有定义int a[9],+P=a;,则P+5表示( )。A.数组元素a[5]的值B.数组元素a[5]的地址C.数组元素a[6]的地址D.数组元素a[0]的值加上5
定义如下变量和数组:int i;int y[2][3]={2,4,6,8,10,12};则下面语句的输出结果是【 】。for(i=0;i<2;i++)cout<<y[1-i)[i+1]<<",";
程序中有如下语句for(int i=0;i<5;i++)cout<<*(p+i<<“,”;能够依次输出int型一维数组a的前5个元素。由此可知,变量P的定义及初始化语句是( )。A.int*p=a;B.int p=a;C.*p=a;D.p=a;
有如下定义语句:int a[]={1,2,3,4,5};,则对语句int*p=a;正确的描述是( )。A.语句int*p=a;定义不正确B.语句int*p=a;初始化变量p,使其指向数组对象a的第一个元素C.语句int*p=a;是把a[0]的值赋给变量pD.语句iht*p=a;是把a[l]的值赋给变量p
有如下定义语句:int a[]={1,2,3,4,5);,则对语句int *p=a;正确的描述是( )。A.语句int *p=a;定义不正确B.语句int *p=a;初始化变量p,使其指向数组对象a的第一个元素C.语句int *p=a;是把a[0]的值赋给变量pD.语句int *p=a;是把a[1]的值赋给变量p
若有以下定义和语句,且0<=I<10,则对数组元素的错误引用是 ( )int a [ ]={1,2,3,4,5,6,7,8,9,0};int*p,Ip=a;A.* (a+I)B.a[p-a]C.p+ID.* (&a[I])
若有下列定义,则对a数组元素地址的正确引用是( )。int a[5],*p=a;A.p+5 B.*a+1 若有下列定义,则对a数组元素地址的正确引用是( )。int a[5],*p=a;A.p+5B.*a+1C.&a+1D.&a[0]
单选题若有定义语句:int m[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是( )。Am[--i]Bm[2*2]Cm[m[0]]Dm[m[i]]