c语言为什么scanf要取地址printf不用呢?

我的猜测是
因为要引入指针的概念就必须引入地址的概念
而scanf这种赋值类的 就好像存东西也需要寄存柜的号码一样吧 也需要“地址”
不过scanf这种取地址应该也是可以交给机器判断的,比如数组名本身是指针型的,本身就是地址,就不用取地址了
而其他非指针类型的变量名就要取地址,为什么没有这样做呢。。如果scanf不取地址,而是用和地址一样大小的int型数据代替地址的话能顺利赋值吗?试一下先
源代码

#include<stdio.h>
int main()
{
int a,b;
a=&b;
scanf("%d",a);
printf("%d",b);
return 0;
}

输入输出

32
32

答案是阔以的
这样的&“取地址”其实给我们提供了更多的可能性
并不只是“坑爹”害我出错的东西
c语言本身妹有问题
有问题的是老是打错的我吧。。
而printf平时打印变量不用取地址就是因为
printf也是可以打印地址的,只要加上取地址符号就行了
all in all
这样的c语言
更好的区分开了
地址和变量

猜你喜欢

转载自blog.csdn.net/a846276245/article/details/85890910
今日推荐