永发信息网

下列程序段的输出结果是__B___。 int *p, *q, k = 1, j=10 ; p=&j; q = &k ; p = q ; (*p)++; printf("%d"

答案:3  悬赏:20  手机版
解决时间 2021-04-08 06:04
  • 提问者网友:人生佛魔见
  • 2021-04-07 09:20
下列程序段的输出结果是__B___。 int *p, *q, k = 1, j=10 ; p=&j; q = &k ; p = q ; (*p)++; printf("%d"
最佳答案
  • 五星知识达人网友:痴妹与他
  • 2021-04-07 09:37
你的答案是错的
第一题,p,q是指针,开始的时候p指向j,q指向k,然后p=q也就是p指向了q指向的内存,也就是说p和q这时都指向了q指向的k,然后(*p)++是p指向的数值加1,也就是k+1.所以输出的*q和*p是相同的,也就是k的值,也就是2 所以应该选B
第二题,先看B,字符串是不能直接这么赋值的,除了初始化的时候;C,P[0]是一个对象,对象访问域要用'.‘不能用->;D,s是字符数组,而’a‘是字符,是不能赋值的。而A,p是个数组名,它也是p数组的第0号元素的地址,相当于p[0]的指针,指针用->来访问域是没问题的。参考资料:百度一下
全部回答
  • 1楼网友:行路难
  • 2021-04-07 11:11
指针只移动了一下下的反来覆去的赋值代码也需要解释啊??呵呵
  • 2楼网友:夜风逐马
  • 2021-04-07 10:15
p=&j; // *p=10
q = &k ; // *q=1
p = q ; // p指向k *p=1
(*p)++; // *p=2即k=2 *q=2
printf("%d",*q); //2
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯