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