两个问题,关于C++的表达式与数组指针

1。inty=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... 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分送上~
展开
 我来答
aaasuper
2012-06-22 · TA获得超过801个赞
知道小有建树答主
回答量:431
采纳率:100%
帮助的人:626万
展开全部
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],现在知道答案了吧
啊_低调
2012-06-22
知道答主
回答量:13
采纳率:0%
帮助的人:2万
展开全部
(1)>>>>>y+=y*(2*y+1)>>>>>y+=10>>>>y=12
(2)指针存的是地址而不是数组吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
文库地摊
2012-06-22 · TA获得超过1196个赞
知道小有建树答主
回答量:663
采纳率:100%
帮助的人:410万
展开全部
1. 连等式是先计算右边的.
y+=y*=2*y+1 //y=2
y+=(y*=5) [y*=5之后,y=10]
y+=10
y=20
2. p是怎么定义的呀, 初值呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
緗虞帱
2012-06-22 · TA获得超过578个赞
知道小有建树答主
回答量:298
采纳率:0%
帮助的人:345万
展开全部
y+=y*=2*y+1
y+=(y*=2*y+1);
1.y=y*(2*y+1)=10;
2.y=y+y=20

2.int (*p)[2]<==>int p[][2];
int a[3][2] <==> int a[6];int *p=(int *)a; p[i] <==>a[i/2][i%2];
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bhtzu
2012-06-22 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4293万
展开全部
都是基础问题。
1·等号算式是右优先的,也就是先 y*=2*y+1= 10;后y+=y =20
2·对于a来说,是多维数组,但地址存储里面就是占有6个int的顺序空间,所以指针p赋值得到就是一个地址,+2就是地址空间+2,和a是几维的没什么关系。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
随便_天堂
2012-06-23
知道答主
回答量:1
采纳率:0%
帮助的人:1622
展开全部
1.每条表达式运算完后都会返回一个变量,如y*=2*y+1运算完后返回y,之后在参加其他运算y+=y,这条表达式运算完也返回y变量
2一一对应,**(a+2)相当于a[2][0]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式