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   低头捡石頭  阅读(75)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示