C语言的scanf函数
一、 变量的内存分析
1. 字节和地址
1> 内存以“字节为单位”,Oxffc1,Oxffc2,Oxffc3,Oxffc4....都是字节 ,0x表示的是十六进制
2> 不同类型占用的字节是不一样的,数据越大,所需的字节数就越多
2. 变量的存储
1> 所占用字节数跟类型有关,也跟编译器环境有关
2> 变量实例
#include <stdio.h>
int main()
{
//内存寻址由大到小
int a=; int b=; printf("a的地址是:%p\n",&a); printf("b的地址是:%p\n",&b); return ;
}
内存由大到小寻址,优先分配内存地址较大的字节给变量。a的内存地址比b大
每个变量都有地址:第一个字节的地址就是变量的地址
3> 查看内存地址:
int a;
printf("a的地址是:%p\n", &a);
4> 注意
在变量未经初始化之前,不要尝试使用变量的值
int a;
printf("a的值是:%d\n", a);
上面的写法是不建议的
二、 scanf函数
1. 简介
这也是在stdio.h中声明的一个函数,因此使用前必须加入#include <stdio.h>。调用scanf函数时,需要传入变量的地址作为参数,scanf函数会等待标准输入设备(比如键盘)输入数据,并且将输入的数据赋值给地址对应的变量
2. 简单用法
int age;
scanf("%d", &age);
scanf函数时,会等待用户的键盘输入,并不会往后执行代码。scanf的第1个参数是"%d",说明要求用户以10进制的形式输入一个整数。这里要注意,scanf的第2个参数传递的不是age变量,而是age变量的地址&age,&是C语言中的一个地址运算符,可以用来获取变量的地址
输入完毕后,敲一下回车键,目的是告诉scanf函数我们已经输入完毕了,scanf函数会将输入的值赋值给age变量
3. 其他用法
1> 用scanf函数接收3个数值,每个数值之间用中划线-隔开
scanf("%d-%d-%d", &a, &b, &c);
3个%d之间是用中划线-隔开的,因此我们在每输入一个整数后都必须加个中划线-,比如这样输入,不然在给变量赋值的时候会出问题
注意:数值之间的分隔符是任意的,不一定要用中划线-,可以是逗号、空格、星号*、井号#等等,甚至是英文字母
// 逗号,
scanf("%d,%d,%d", &a, &b, &c); // 输入格式:10,14,20
// 井号#
scanf("%d#%d#%d", &a, &b, &c); // 输入格式:10#14#20
// 字母x
scanf("%dx%dx%d", &a, &b, &c); // 输入格式:10x14x20
2> 用scanf函数接收3个数值,每个数值之间用空格隔开
scanf("%d %d %d", &a, &b, &c);
3个%d之间是用空格隔开的,我们在每输入一个整数后必须输入一个分隔符,分隔符可以是空格、tab、回车
4. 注意
scanf的第一个参数中不要包含\n,比如scanf(“%d\n”, &a); 这将导致scanf函数无法结束
5. 习题
提示用户输入两个整数n,然后计算并输出两个整数的和
解
//提示用户输入2个数
#include <stdio.h>
int main()
{
//定义2个变量
int a,b; //提示第一个数
printf("请输入第1个数:\n"); //接收第一个数
scanf("%d",&a); //提示第2个数
printf("请输入第2个数:\n"); //接收第2个数
scanf("%d",&b); //计算和并且输出
int sum = a + b;
printf("%d + %d = %d\n",a,b,sum); return ;
}
最新文章
- PostgreSql性能测试
- JavaScript 属性类型(数据属性和访问器属性)
- BZOJ1527 : [POI2005]Pun-point
- 使用 SVN Hook 实现服务器端代码自动更新
- H - Lazier Salesgirl
- Maven 依赖管理
- 设置navigationBar上面的item
- plsql导入导出表
- apktool重打包签名后安装出现“Failure [INSTALL_FAILED_ALREADY_EXISTS]”
- 如何将Icon转成Bitmap(对ICON的内部格式讲的比较清楚)
- Spring Boot Security 基于角色的访问控制
- ffplay播放器移植VC的工程:ffplay for MFC
- 动态规划-LIS
- (jQuery插件)autocomplete插件的简单例子
- css 设计规范
- Android入门笔记
- React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: undefined.
- RecyclerView错误
- Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem C. Cargo Transportation 暴力
- Determine overlapping rectangles
热门文章
- Linux入门(5)——Ubuntu16.04安装网易云音乐
- ~.NET下国际化i18n简单示例
- Centos 7.0 execute yum update ——File ";/usr/libexec/urlgrabber-ext-down";, line 75, in <;module>; 解决方式
- [mysql使用(2)] mysql的一些语法与Oracle的差别
- Linux系统用户管理
- Spark SQL数据源
- 注解的形式与xml文件的形式完成事务管理及xml文件的配置
- 2016-2017 ACM-ICPC, Asia Tsukuba Regional Contest D Hidden Anagrams
- 使用ichartjs生成图表
- 简单Spring+Struts2+Hibernate框架搭建