首页 > 试题广场 >

下列代码的运行结果(

[单选题]
下列代码的运行结果(
int a[]={1,2,3,4};
int *b=a;
*b+=2;
*(b+2)=2;
b++;
printf("%d,%d\n",*b,*(b+2));
  • 1,3
  • 1,2
  • 2,4
  • 3,2
推荐
数组名a作为右值时代表数组元素的首地址也就是&a[0],*b=a,此时b指向了第一个元素也就是1,然后*b+=2,也就是1+2=3,此时数组第一个元素变成了3.*(b+2)相当于a[2]也就是a[2]=2,此时数组第三个元素变成了2. b++也就是b=b+1,此时b已经指向了数组的第二个元素也就是2.因此*(b+2)也就是变成了数组的第四个元素也就是4.
编辑于 2017-03-19 10:45:31 回复(0)

*b=a  a数组名代表数组首地址,b指向了第一个元素1

*b+=2  相当于*b=*b+2=3,然而此时*b仍指向第一个元素,即数组第一个元素由1变为3

*(b+2)=2  相当于a[2]=2,即第三个元素由3变为2

b++    此时b指向第二个元素

所以*b就为2,*(b+2)也就指向第四个元素为4

 

发表于 2018-02-09 22:18:18 回复(0)
b++ 很灵性
发表于 2018-01-05 19:52:58 回复(3)
你这手b++;突如其来的操作闪了我的腰,如果没有b++那就是选D了。可惜没如果

发表于 2017-12-02 20:27:31 回复(0)
数组名a作为右值时代表数组元素的首地址也就是&a[0],*b=a,此时b指向了第一个元素也就是1,然后*b+=2,也就是1+2=3,此时数组第一个元素变成了3.*(b+2)相当于a[2]也就是a[2]=2,此时数组第三个元素变成了2. b++也就是b=b+1,此时b已经指向了数组的第二个元素也就是2.因此*(b+2)也就是变成了数组的第四个元素也就是4.
编辑于 2017-03-19 10:45:31
发表于 2018-06-27 19:23:30 回复(0)
仔仔细细看题
发表于 2018-06-06 18:14:04 回复(0)
啥破题,还b++ 出题人你出来,我保证不打死你
发表于 2017-10-13 12:20:46 回复(0)
带*表值不带*表示地址
发表于 2017-08-20 12:18:01 回复(0)
*b+=2就等于*b = *b + 2,所以此时*b的值为3;
*(b+2) = 2等价于b[2] = 2,
b ++ 表示b地址指向下一个数组的地址了
所以答案为2,4
发表于 2017-03-11 21:56:54 回复(0)
没搞懂
发表于 2017-02-28 15:51:31 回复(0)
看清楚就错不了。。
发表于 2017-01-24 13:15:07 回复(0)
数组为3 2 2 4,p现在指向第二个值
发表于 2017-01-02 11:02:07 回复(0)
看清楚,就做对了
发表于 2016-12-07 09:49:40 回复(0)