若有定义:int a=5,*p = &a;有错误的表达式是(B)    A.*&a B.&*a C.&*p D.*&p 为什么选b

如题所述

a是一个变量名,将操作符*应用于a没有定义,即无意义,因此&*a整个表达式无意义。*&a等同于*p,&*p等同于&a,*&p等同于p.
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-05
我想问为什么b错了,d还是对的呢,两个不是有一样的错误吗? p就是一个地址,在向他取地址不是很奇怪吗

设int a=5,b,*p=&a,则使b不等于5的语句为: ( B ) A.b=*&a B.b=*a...
p p是指针变量 又*p=&a 所以p的值就是a的地址 则*p=a C错 D显然错

若有定义:int a[5], *p=a;则不能正确表示数组元素a[i]的是 A.*(a+i...
不能正确表示数组元素a[i]的是D。D把元素值作为地址取其中内容了。

若有定义语句int a[5], *p=a;,则对a数组元素的正确引用是什么 A *&...
正确答案是:D &a[5]就是a[5],下标越界了 a就是a[0],a[0]+2不是对数组元素的正确引用 同理,*(p+5)就是a[5],下标越界了 而* (a+2)就是a[2]

若有定义:int a[5],*p=a; 则对a数组元素地址正确引用的是( )。 &a...
p指向a首地址(也就是a[0]的地址),p+2就是a[2]的地址,相当于&a[2]。&a[5]是错的,访问越界了,数组元素最后一个是a[4]。a表示数组的首地址,本身是地址常量,不能赋值。所以a++是错了。&a也是错的,a本身就是地址。

...a=8, *p=&a; ,则下列说法中不正确的是( )。 A.*p=a=8 B.p=&a C...
a是int型。p是int*型。指向a。于是 *p和a等效。A 等效于a=a=8 B p=&a重新赋值一次实际没有改变。C *&a等效于a。 于是这里是a=a。D不正确。 原因是&*a。由于a不是指针,所以*a没意义。 错误。

若已定义:int a[5],*p=a; 无法引用数组元素a[3]的是( )。 A、*p+3...
A无法引用a[3],所以选A——因为*p是第一个元素的值即a[0],所以*p+3是a[0]+3而不是a[3]。其余B:p[3]肯定是a[3]没错;C:*(p+3)把p换成a就是*(a+3),这和a[3]等价;D:&p[0]就是p,参照C选项一模一样了!

132. 若有定义:int *p,a=4; p=&a;则以下均代表地址的是( ). A. a...
p被定义为一个指向int的指针,而指针存储地址变量。而&运算符是表示变量地址的。所以p=&a,就是将a的地址赋给p。故选B

在c语言中,有如下式子:int a[5],*pa=a; pa+=2; 他说:*pa=a+2*2=a+...
在这行代码中int a[5],*pa=a; pa的值就是数组a的首地址, pa+=2就是向后移动两个元素的位置,pa+=2 和 pa = a +2是一样的,而不是a +4。a+4就是从数组的首地址开始移动4个偏移量,是错误的。

若有声明"int a[5],*b=a,(*c)[3],*d[3];",则以下表达式中有语法错误...
C是错的,(*c)[3] 的意思就是,一个元素为int指针的数组。所以c[0]就是一个指向3个元素的指针 应该是(*c)[0][0]

(VC++)若有定义:inta=100,*p=&a;则*p的值是?
C,int *p=&a,是在定义p是一个指针的同时把a的地址给p

相似回答