scanf函数从使用到挖掘(因大一c语言课的各种状况有感而发)

a62dd0c0fec14e359746ffd21a9844a9.png

使用

使用举例

#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.为什么格式符之间使用逗号后,输出时不能用空格隔开。反之亦然。

解决问题

2bbb542a47ad4503a89c52045cfc083e.png

要想解决这个问题,我们得从分析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")的输入形式为 :数字,数字

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值