当前位置: 首页 > news >正文

C语言学习笔记 - 37.数据类型 - scanf函数的基本用法

本知识点对应谭浩强《C程序设计(第五版)》第3章3.4.4节"用scanf函数输入数据",是C语言实现用户交互的核心基础。scanf与printf是C语言最常用的一对输入输出函数,几乎所有需要用户输入的程序都会用到。


一、教材学习建议

谭浩强《C程序设计(第五版)》整体质量优秀,但部分章节讲解不够深入,初学者学习时应重点关注以下内容:

章节类型

章节内容

学习建议

核心重点章节

第4章(选择结构)、第5章(循环结构)、第7章(函数)

这三章是C语言的灵魂,建议逐字精读。

次重点章节

第8章(指针)

难度较大但极其重要,应尽量理解。

了解性章节

第9章及以后的内容

了解基本概念即可,无需深入钻研。

补充学习

教材中"浮点数常量的表示"、"数据的溢出"等内容

依赖补码知识,待后续补码专题讲解后再深入理解。


二、scanf函数概述

2.1 核心功能

scanf函数的作用:将用户从键盘输入的字符序列,转换为指定格式的数据,并存入对应的变量中。

与直接赋值(如int i=123;)相比,scanf实现了动态输入:程序运行时由用户指定变量的值,大大增强了程序的灵活性和交互性。

2.2 基本语法

scanf("输入控制符", 输入参数);
  • 输入控制符:指定输入数据的格式,与printf的输出控制符用法基本一致。

  • 输入参数:变量的地址,必须在变量名前加取地址符&


三、基本用法:不含非输入控制符

这是scanf最常用、最简单的用法,格式字符串中只包含输入控制符。

3.1 代码示例

#include <stdio.h> int main() { int i; // 定义整型变量i,但不初始化 printf("请输入一个整数:"); scanf("%d", &i); // 从键盘读取一个整数,存入变量i中 printf("你输入的整数是:%d\n", i); return 0; }

运行过程

  1. 程序运行到scanf语句时会暂停,等待用户输入。

  2. 用户在键盘上输入123并按下回车键。

  3. scanf将输入的字符'1''2''3'转换为十进制整数123

  4. 123存入变量i对应的内存单元。

  5. 程序继续执行,输出结果:你输入的整数是:123

3.2 输入控制符说明

scanf的输入控制符与printf的输出控制符完全一致:

  • %d:输入十进制整数。

  • %c:输入单个字符。

  • %f:输入单精度浮点数。

  • %lf:输入双精度浮点数。


四、核心原理解析

4.1 为什么需要输入控制符?

关键事实:从键盘输入的所有内容,本质上都是字符,而不是数字。

例如,当你在键盘上输入123时,操作系统接收到的不是整数123,而是三个独立的字符:'1'(ASCII码49)、'2'(ASCII码50)、'3'(ASCII码51)。

输入控制符的作用就是:将这些字符按照指定的格式转换为对应类型的数据%d告诉scanf:"请把用户输入的数字字符序列转换为一个十进制整数"。

4.2 为什么需要取地址符&

计算机内存由一个个连续的存储单元组成,每个存储单元都有一个唯一的内存地址。变量本质上是内存中一块连续存储单元的别名。

  • &是C语言中的取地址运算符

  • &i表示"获取变量i的内存地址"。

  • scanf需要知道变量的地址,才能找到变量在内存中的位置,将转换后的数据存入正确的存储单元。

通俗理解:变量就像一个盒子,地址就是盒子的编号。scanf需要知道盒子的编号(地址),才能把东西(数据)放进正确的盒子里。

初学者取巧记忆法:如果暂时不理解地址的概念,只需记住:要给哪个变量赋值,就在变量名前面加一个&


五、要点总结

  1. scanf函数实现了程序的动态输入功能,使程序可以在运行时接收用户输入的数据。

  2. 基本语法:scanf("输入控制符", &变量名);

  3. 输入控制符与printf的输出控制符用法一致,如%d用于输入十进制整数。

  4. 从键盘输入的所有内容本质上都是字符,输入控制符负责将字符转换为对应类型的数据。

  5. 必须在变量名前加取地址符&,否则scanf无法找到变量的内存位置。

  6. 学习C语言应重点掌握第4、5、7章,这三章是后续所有编程学习的基础。

http://www.jsqmd.com/news/841810/

相关文章:

  • 北京永强数据恢复中心硬盘efi分区丢失系统数据恢复
  • 沟槽式接触技术:从光刻简化到工艺整合的芯片制造革新
  • CAXA 中心线
  • RAG查询改写①【第九篇】:工业级Query全链路优化,抖音深度扩写生产方案
  • 【干货】SFP连接器选型指南:端口密度、光管配置与散热方案全解析 | VOOHU 沃虎电子
  • 期刊论文发表提速:虎贲等考 AI,让核心期刊写作更规范、更高效、更容易中稿
  • 神经网络分子动力学与长程静电模拟优化策略
  • 特征值:矩阵世界里的“灵魂密码“
  • DCN、DeepFM、xDeepFM怎么选?主流CTR模型对比与业务选型指南
  • 版本控制:智能体提示与配置的CI/CD
  • 降重降 AIGC 双通关:虎贲等考 AI 让论文自然无痕迹,安全过审更省心
  • 2026年近期,四川企业如何选择一站式GEO营销服务?智创云客深度解析 - 2026年企业推荐榜
  • taotoken官方价折扣活动为开发者带来实实在在的成本节省
  • 游戏卡顿困扰你?DLSS版本管理工具帮你轻松提升帧率
  • 使用 TaoToken CLI 工具一键配置开发环境与多个 AI 工具
  • Grafana 令牌被盗,GitHub 环境可遭访问且代码库被下载
  • 四川防静电地板厂靠谱实力排行:四川防静电地板厂/成都防静电地板厂/水泥纤维网络架空地板/活动架空地板/玻璃防静电地板/选择指南 - 优质品牌商家
  • 本专栏学习路线图与里程碑项目规划
  • 全志T113-S3开发板CAN总线实战:从SocketCAN驱动到嵌入式通信应用
  • 开源技能图谱引擎:构建可量化评估的团队能力管理体系
  • python系列【仅供参考】:避开这些坑!用Python爬取IEEE Xplore论文信息时,我的防反爬与数据清洗实战记录
  • 电塔上鸟窝检测数据集648张VOC+YOLO格式
  • 重复内容误标率高达37%?NotebookLM检测逻辑漏洞全曝光,立即修复这6个隐藏开关
  • 酒店智能一卡通门禁及梯控子系统通过先进的技术手段,实现了对酒店物理空间的安全、高效、智能化管理。选择可靠的设备供应商和有经验的集成商,进行周密的方案设计和规范的施工,是项目成功的关键。
  • 2026年10款降AI率工具实测红黑榜:毕业生必备!附免费降AI避坑指南 - 降AI实验室
  • 基于大语言模型与向量数据库构建拟人化AI伴侣的技术实践
  • 细胞型膜计算优化算法应用【附算法】
  • 调节阀动态流量自感知与不稳定流体负载补偿方法【附代码】
  • Laravel集成AI智能体开发指南:从工具调用到实战客服助手
  • 2026年Q2热门防护网围栏网核心技术参数全解析:铁丝网护栏网、铁路护栏网、高速路围栏网、体育场围栏网、体育场护栏网选择指南 - 优质品牌商家