注册 登录
编程论坛 C++教室

弱问指针三小题

breezeintopl 发布于 2008-08-20 02:44, 1061 次点击
1.对于类型相同的指针变量,不能进行()运算。

A +    B -    C =    D ==

2.若有以下说明和语句,且0<=i<10,则下面()是对数组元素的错误引用。

int a[10]={1,2,3,4,5,6,7,8,9,0},*p,i;

A a[p-a]    B p+i

3.以下程序的输出结果是()

#include <iostream.h>

void main()

{

int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i;

for(i=0;i<4;i++)

p[i]=&a[i*3];

cout<<p[3][2]<<endl;

}

A 输出项不合法    B 12

答案给的是1.A 2.B 3.B

为什么啊???
8 回复
#2
hfut_short2008-08-20 12:38
第3题:
循环到i=3的时候:即 p[3] = &a[9];
也就是把p[3][0]指向a[9];
所以p[3][2]自然就指向了a[12];
#3
xlh52252008-08-20 15:20
又是做作业的,很郁闷!
#4
忘记喧嚣2008-08-21 00:04
2.若有以下说明和语句,且0<=i<10,则下面()是对数组元素的错误引用。

int a[10]={1,2,3,4,5,6,7,8,9,0},*p,i;

A a[p-a]    B p+i

没写完吧..a和p 这里都没关系
#5
zzt_4282008-08-22 10:32
答1
选A,指针相加没有意义,同类型指针相减是可以的.编程应该尽量避免指针和指针的算术运算
#6
zzt_4282008-08-22 10:33
答2
第二题,也应该选A  p+i  是指针形式访问,是可以的
#7
zzt_4282008-08-22 10:37
答3
最后一个也选B. *p[4] 是指针数组,每个元素都是指针.依次指向1,4,7,10
p[3][2]也就是最后一个元素.
#8
zzt_4282008-08-22 10:37
安放大
你这家伙,作业不自己做,到网上来问人
#9
wf_lee7342008-08-23 15:23
第一题 是A; 指针+没意义,-计算指针物理相对位置,=很显然,==判断是否同一地址返回BOOL型
第二题 是B; 指针加个整数跟数组没关系 是个地址 除非是*(p+i)
第三题 是B; p[0]==&a[0],p[1]==&a[3],p[2]==&a[6],p[3]==&a[9];这里数组a可以看作被分成了数组名为p[0],p[1],p[2],p[3]的四个一维数组(数组名就是数组第一个元素的地址),而他们都各有三个元素,也就是说p[0][0]==a[0],p[0][1]==a[1],p[0][2]==a[2];p[1][0]==a[3] ~~~~  所以p[3][2]==a[11].   可以这么理解,实际上二维数组也就是这么被存储和查找的~~

[[it] 本帖最后由 wf_lee734 于 2008-8-23 15:55 编辑 [/it]]
1