C语言的scanf函数

一、 变量的内存分析

 1. 字节和地址

1> 内存以“字节为单位”,Oxffc1,Oxffc2,Oxffc3,Oxffc4....都是字节 ,0x表示的是十六进制

2> 不同类型占用的字节是不一样的,数据越大,所需的字节数就越多

 2. 变量的存储

1> 所占用字节数跟类型有关,也跟编译器环境有关

2> 变量实例

 1 #include <stdio.h>
 2 int main()
 3 {
 4    //内存寻址由大到小
 5  int a=10;
 6 
 7  int b=20;
 8     
 9  printf("a的地址是:%p\n",&a);
10 
11  printf("b的地址是:%p\n",&b);
12     
13     return 0;
14 }

 

  内存由大到小寻址,优先分配内存地址较大的字节给变量。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,然后计算并输出两个整数的和

 

 1 //提示用户输入2个数
 2 #include <stdio.h>
 3 int main()
 4 {
 5     //定义2个变量
 6     int a,b;
 7     
 8     //提示第一个数
 9     printf("请输入第1个数:\n");
10     
11     //接收第一个数
12     scanf("%d",&a);
13     
14     //提示第2个数
15     printf("请输入第2个数:\n");
16     
17     //接收第2个数
18     scanf("%d",&b);
19     
20     //计算和并且输出
21     int sum = a + b;
22     printf("%d + %d = %d\n",a,b,sum);
23     
24     return 0;
25 }

 

 

 

posted @ 2014-12-06 17:37  巅峰之斗  阅读(340)  评论(0编辑  收藏  举报