c语言中指针变量在scanf用法(怎么使用scanf函数将整数赋值给指针变量)

本文目录
怎么使用scanf函数将整数赋值给指针变量
一楼完全正确
也可这样 更简洁
#include《stdio.h》
void main()
{ 告诉你个书上都不写的
int a,*p=&a 指针*p是没有地址的
scanf("%d",p); c不给指针变量内存
printf("%d\n",a);
}
关于c语言scanf的用法
记住一点,scanf认为遇到“非法输入”就结束。
scanf("%2d%f",&a,&b);中第一个格式控制字符2d的意思是读取2位,作为一个整数输入到给对应的变量a的地址中。输入876,当然只读取前2位87。这是2的作用,后面输入对于2来说,相当于非法输入。
对于%f,后面输入的是7
543.0,对于浮点型数据是不可能得到空格的,所以遇到空格,认为是非法输入,结束输入。所以b的值是6,即是6.000000
C语言 指针与scanf
首先你只要明白scanf语句中要传的是地址就可以,具体的底层实现你不用管。
关于指针,你要知道一个指针类型的变量指向的是一个地址,比如定义一个指针,指向你家的地址,不管你家的房子怎么装修,我只要照着我的地址去找还是能找到你这个房子,假如我修改了这个地址指向的变量,也就是我把你家地址上的建筑给改变了,那你家的房子当然就变了。
如果你不好理解的话就记住,‘*’和‘&’这两个符号假如紧挨着就抵消,其中一个符号移动到‘=’的另一边就变成另一个符号。举个例子*(&a)其实就是a,*p = a其实就是p = &a。这个小技巧只适合做选择题什么的,底层实现并不是这样。
然后题中,p是一个指向long类型的指针,a是一个long类型变量。
先看A,*p是一个long类型变量,&a是地址,不能把地址赋给变量,A错。
再看B,malloc分配了一个8字节的空间,然后转换成指向long类型的指针,然后让p指向这块内存,然后p很显然是一个地址,scanf里传的就是地址,所以B对。
再看C,p=&a的结果就是p,是一个地址类型,C对。
最后看D,&a是地址类型,D对。
然后这个题是选不正确的,那答案就是A。

更多文章:
python递归算法1加到100(编写一个递归函数计算从1加到100的和)
2026年5月15日 01:45
android控件属性大全(Android控件<第十七篇>:FloatingActionButton详解)
2026年3月23日 18:15
hadoop还值得学习吗(Hadoop是什么,为什么要学习Hadoop)
2025年6月30日 06:15
mysql驱动包与mysql版本(idea版本对mysql影响)
2026年6月4日 18:45
confusion形容词形式(confusion前可以加a么,它好像不可数,可刚)
2025年10月7日 21:30
美国img模特经纪公司(有谁知道国际有名的模特经纪公司有那些)
2026年8月7日 17:15
vivo手机后台管理在哪(Vivo手机如何设置应用后台运行)
2026年8月25日 08:45
hippogriff(哈利.波特插曲<<Do The Hippogriff>>的歌词)
2025年12月31日 15:00















