一、变量的内存分析
1.字节和地址
*
为了更好地理解变量在内存中得存储细节,先来认识一下内存中得”字节“和”地址“。
*
内存以字节为单位
*
不同类型占用的字节是不一样的,数据越大,所需的字节数九越多
2.变量存储
*
所占用的字节数跟类型有关,也跟编译器环境有关
16位编译器 | 32位编译器 | 64位编译器 | |
char | 1 | 1 | 1 |
int | 2 | 4 | 4 |
float | 4 | 4 | 4 |
double | 8 | 8 | 8 |
* 变量实例
int b =10;
int a = 20;
#
内存由大到小寻址,优先分配内存地址较大字节给变量。b的内存地址比a大;
#
每个变量都有地址:第一个字节的地址就是变量的地址;
*查看内存地址
int a;
printf("a
的地址是:%p\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、其他用法
*用scanf函数接收3个数值,每个数值之间用中划-隔开
scanf("%d-%d-%d",&a,&b,&c);
3个%d之间是用中划线-隔开的,因此我们在每输入一个整数后都必须价格中划线-,比如这样输入
10-14-20,不然在给变量赋值的时候会出问题。