c语言 scanf为什么要用&来取地址
发布网友
发布时间:2024-10-05 05:03
我来回答
共2个回答
热心网友
时间:2024-11-24 00:54
因为scanf要往你的变量里写入数值,所以他必须知道那个变量的地址,至于变量里存的是什么值,他是不管的,反正他写入之后就被覆盖成新的值了
对比printf,他是要输出变量里的数值,他只管要那个值,至于地址在哪,他也无所谓
这就是写和读的本质性区别,写只要地址,读只要值
变量其实同时有地址和值两个东西,我们一般用一个变量,都是直接写一个名字,其实如果这个名字在赋值号右边,就是代表值,如果在赋值号左边,就是代表地址,写出来一样,意义是不一样的,编译器自动帮你选择了正确的意义
变量名字写在函数参数里面时,和写在赋值号右边一样,也是代表值,可是像scanf这种函数,他确实需要地址,编译器只认识赋值号,不认识scanf,没法自动选到正确的东西,这时就需要你手动加一个取地址的符号&,明确告诉编译器去选择变量的地址给这个scanf来用
热心网友
时间:2024-11-24 00:54
一直以为是内存指针,被你一问也迷糊了。