有以下程序#include <stdio.h>void fun(int p){ int d=2; p=d++;printf("%d",p);}main(){ int a=1; fun(a); printf("%d\n",a);}程序运行后的输出结果是 ___21___ 。
这个a按值传递过去p不就先为1了么,下面1=2不就矛盾了么???
p=d++;这是个赋值语句,不是让你去判断,p最开始是等于1,但是经过这个语句之后p就等于2了
回复 嘿嘿大人:那p一开始是1,结过赋值语句就直接从1变成2,是不是太不合情理了。。。那要它原来等于1有什么意义。
回复 四年半。:你觉得需要什么意义,这就是用来考知识点的而已,根本就没有啥意义的,它就是想考你按值传递和地址传递的区别
回复 嘿嘿大人: 这个是就近原则的原因么。。要不然一开始的b=1莫名其妙没有了。。
回复 四年半。:不是,这就是一个赋值语句,而且那里有什么b=1?
回复 嘿嘿大人:是p=1,打错了。 我不明白的是既然传递过去p=1,为什么已经赋值的p还可以再次赋值了。。。。
回复 四年半。:因为p是个变量啊,变量的特点就是可以随时随地的变撒,不然干嘛要发明变量
回复 四年半。:比如说int i=0;
按照你的思路那么这个i就不能被操作了哟,那这个i拿来还有啥用嘛
点赞
扫一扫分享朋友圈
二维码
分享
你确定要删除这个问题吗?