C语言 - scanf | sizeof | 变量存储

变量存储

1 - 字节与地址

① 内存以字节为单位,每个字节都有自己的内存地址。计算机中通常以十六进制表示地址

② 不同类型占用的字节是不一样的,在 64 位编译器下 int 型占据 4 个字节,char 型占据 1 个字节

2 - 存储分析

假设有 int a=1;int b=2;内存分析如下

 

 注:未经初始化的变量,它的值是不确定的,所以变量在使用之前一定要先进行初始化

scanf

1 - scanf 是系统自带的函数,声明包含在 stdio.h 文件中,使用该函数时必须引用头文件 #include<stdio.h> 。该函数只接受变量的地址,格式为 &变量名

2 - 当执行到 scanf 函数时程序就暂停等待用户输入。它是一个阻塞式的函数,当用户输入完毕就会将值赋给变量,然后用户敲回车键告知计算机键入完毕

scanf("%d\n",&a);// scanf 内部不能使用 \n 转义字符
scanf("%d,%d",&num1,num2);

① 当两个占位符之间有 , 隔开时那么在输入时也要求使用逗号隔开;同样地若内部为 %d#%d 则输入 23#34;若内部为 %dy%d 则输入 11y22

② 若中间的字符是空格,则在输入时可以用空格隔开、也可以使用 tab 键或者回车键作为分隔符隔开。后两者可以看做是由空格组成

 1 int a = 0;
 2 int b = 0;
 3 printf("请输入密码:\n");
 4 scanf("%d@%d",&a,&b);
 5 
 6 if (a ==23 && b == 45) {
 7     printf("开锁成功\n");
 8 }else{
 9     printf("解锁失败\n");
10 }

sizeof

1 - 用来计算变量、常量或者是一种数据类型所占的内存字节数。sizeof 不是函数。某种层面上讲你可以认为它是一个宏一样的东西 

float a = 22.2;
long b = 33;
char c = 8;
printf("a的内存大小是:%lu\nb的内存大小是:%lu\nc的内存大小是:%lu\n",sizeof(a),sizeof(b),sizeof(c));// 4  8  1

 

posted on 2017-08-02 11:49  低头捡石頭  阅读(72)  评论(0编辑  收藏  举报

导航