使用
使用举例
#include<stdio.h>
int main() {
int a = 0;
scanf("%d", &a);
printf("%d", a);
return 0;
}
分析:
scanf()函数用于读取用户的键盘输入。
程序运行到这个语句时,会停下来,等待用户从键盘输入
用户输入数据、按下回车键后,scanf()就会处理用户的输入,将其存入变量。
它的原型定义在头文件stdio.h。
错误使用例子
例1:
缺少&
例2:
scanf“”中的形式与输入的形式不同
对使用的格式提出问题
1.为什么变量前要加上&(取地址符号)
2.为什么格式符之间使用逗号后,输出时不能用空格隔开。反之亦然。
解决问题
要想解决这个问题,我们得从分析scanf的参数设计开始
分析scanf函数的参数设计:
scanf一共有两个参数
参数一:const char*format
分析:
(1)const名叫常量限定符,用来限定特定变量,以通知编译器该变量是不可修改的。
(2)char表示字符类型,* 间接访问操作符,也叫解引用操作符,char*合在一起产生了一个新的变量类型,字符指针变量类型,使得format中存储的数据为对应变量的地址,这个地址通过我们输入的格式符的不同而改变,导致其对应不同的变量类型。
参数二:,argument
分析:
(1), 逗号是便于我们观察和理解代码。也是我们再使用scanf要加上逗号的原因
(2)argument 在这里可以翻译为实参,一般来说,参数为实参时表示函数为传址调用,而传址调用要使用&+变量名(取地址符号)来获取变量的地址传给函数,这也是我们要加上&的原因。而其所相对的参数称为形参,表示传值调用。具体的区别大家可以去b站大学搜索这两个关键词学习。简单的来说,传址调用会改变原变量的值,就比如我们在使用scanf时,我们输入的值会改变原变量a,b.....,而传值调用不会改变原变量a,b。
(3)输入的格式是scanf函数“”中除去表示变量类型的字符如%d%f之后剩下的。比如scanf("%d,%d")的输入形式为 :数字,数字