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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)