两个问题,关于C++的表达式与数组指针
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/06/14 02:21:29
两个问题,关于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分送上~
![两个问题,关于C++的表达式与数组指针](/uploads/image/z/19292100-60-0.jpg?t=%E4%B8%A4%E4%B8%AA%E9%97%AE%E9%A2%98%2C%E5%85%B3%E4%BA%8EC%2B%2B%E7%9A%84%E8%A1%A8%E8%BE%BE%E5%BC%8F%E4%B8%8E%E6%95%B0%E7%BB%84%E6%8C%87%E9%92%88)
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],现在知道答案了吧