3 回答
已采纳
onemoo
TA贡献883条经验 获得超454个赞
不是“pvalue是怎么存储%d输入的整数呢”,而是scanf会将输入的数存入传入的指针所指的变量中。 也就是:pvalue是指向value的,scanf通过pvalue访问了value,并向其中存入了输入的整数。
scanf的第一个参数是格式化指示,你必须按照指示的要求来输入。 scanf将接受的输入,按照指示解释成相应的类型,并将其依次存入后续参数所指的位置中。后面的参数都会是指针类型。 scanf函数的行为就是这样,你使用时记住即可。
===较真的分割线===
至于为什么那些参数必须是指针?直接传入value不行? 如果你想知道的话,那是因为函数调用时,参数是以拷贝的方式传入的,传入函数中的只是一个“副本”。 就是说如果你传入的是value,那么函数中得到的value只是函数外value的一个“副本”,它们是值相同的两个value。 所以scanf把值存入value,这并不会改变函数外面value的值,scanf没办法改变外部value的值。
为此我们改用传地址的方式,也就是将指向value的指针传入scanf。 诚然scanf中得到的那个指针仍然是一个副本,但对scanf要做的事没有影响,副本指针仍是指向外部value的,可以通过这个副本指针来改变外部value的值。 这就是为什么scanf后面所有的参数都应是指针类型的原因。
这些解释看不懂的话,看分割线以上的就好了。
乱舞的旋律
TA贡献105条经验 获得超38个赞
scanf("%d",地址); scanf找到地址把值存到那个地址里的, 所以你经常看到 scanf("%d %d %d",&a,&b,&c)之类的 &a就是找到a的地址 然后你输入的 整数值就会存入到那个地址里 就这样理解 pvalue 就是value的地址 所以不需要&(取地址符)
- 3 回答
- 5 关注
- 1608 浏览
添加回答
举报
0/150
提交
取消