两个问题,关于C++的表达式与数组指针
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/08/28 04:27:01
两个问题,关于C++的表达式与数组指针
1.int y=2;表达式y+=y*=2*y+1的值是?
我的想法是①y=y*(2*y+1)=2*(2*2+1)=10;②y=y+(2*y+1)=10+(2*10+1)=31;
这么算哪里出错了?
2.设有变量定义int a[3][2]={1,2,3,4,5,6},(*p)[2]=a;表达式**(p+2)的值是?
这里的函数指针p不是指向长度为2的数组么,但是a的第一维长度为3啊,到底多维数组的指向是怎么用的?请高人实例解答下,答得好还有20分送上~
1.int y=2;表达式y+=y*=2*y+1的值是?
我的想法是①y=y*(2*y+1)=2*(2*2+1)=10;②y=y+(2*y+1)=10+(2*10+1)=31;
这么算哪里出错了?
2.设有变量定义int a[3][2]={1,2,3,4,5,6},(*p)[2]=a;表达式**(p+2)的值是?
这里的函数指针p不是指向长度为2的数组么,但是a的第一维长度为3啊,到底多维数组的指向是怎么用的?请高人实例解答下,答得好还有20分送上~
1. 你第一步分析没错,y*=2*y+1 这个表达式的值,就是y*=这个赋值的结果10 .
所以y+=y*=2*y+1相当于y+=10,注意这个时候y已经是10了,所以结果是20
2. p是指向长度为2的数组的指针,赋值p=a以后,p和a就是等效的了.现在拿a来讨论
a+2相当于&a[2],**(a+2)相当于**(&a[2])即*a[2]即a[2][0],现在知道答案了吧
所以y+=y*=2*y+1相当于y+=10,注意这个时候y已经是10了,所以结果是20
2. p是指向长度为2的数组的指针,赋值p=a以后,p和a就是等效的了.现在拿a来讨论
a+2相当于&a[2],**(a+2)相当于**(&a[2])即*a[2]即a[2][0],现在知道答案了吧