当前位置:网站首页>C语言的查漏补缺(1)
C语言的查漏补缺(1)
2022-07-23 18:07:00 【渡上舟(每天都要坚持学习鸭)】
目录
4.2 变量的作用域:变量在哪里可以使用,哪里就是它的作用域
1. 关于main函数
C语言规定main函数是程序的入口,main函数有且仅有一个。

2. 关于输出格式
- %c - 字符
- %d - 按照 有符号十进制整数 的格式输出
- %ld - 输出长整型数据
- %u - 无符号十进制整数
- %zu - 打印一个sizeof返回的无符号整型
- %o - 无符号八进制整数 (如:0123)
- %x(%X) - 无符号十六进制整数(如:0x1234)
- %f - 单精度浮点数(float)
- %lf - 双精度浮点数(double)
- %p - 指针
- %s - 字符串
3. 关于数据类型
3.1 计算机中的单位

3.2 关于sizeof
sizeof - 是C语言的一种单目操作符,不是函数,以字节的形式给出其操作数的存储大小。存储大小以操作数的类型决定。即计算操作数在内存中所占空间的大小
3.3 数据类型的大小
#include <stdio.h>
int main()
{
printf("%zu\n", sizeof(char));//1个字节
printf("%zu\n", sizeof(short));//2
printf("%zu\n", sizeof(int));//4 32个bit
printf("%zu\n", sizeof(long));//4或8
printf("%zu\n", sizeof(long long));//8
printf("%zu\n", sizeof(float));//4
printf("%zu\n", sizeof(double));//8
return 0;
}C语言规定,sizeof(long)>=sizeof(int)就可以,所以long的大小可以是4个字节,也可以是8个字节。
3.4 类型的使用
类型是用来创建变量的,创建变量的本质是向内存申请空间,来存放数据。
如:
#include <stdio.h>
int main()
{
//创建int类型的变量age
int age = 20;
//向内存申请4个字节的空间来存放整数20
return 0;
}4. 变量
4.1 变量的分类
- 局部变量 - { }内部定义的变量
- 全局变量 - { }外部定义的变量
4.2 变量的作用域:变量在哪里可以使用,哪里就是它的作用域
- 局部变量的作用域:变量所在的局部范围
- 全局变量的作用域:整个工程
4.3 变量的一些注意事项
(!!!)在同一个范围内,变量只能定义一次,不能重复定义。
#include <stdio.h>
int main()
{
int a = 10;
int a = 100;//错,在同一个范围内,变量不能重复定义
return 0;
}
(!!!)不同局部范围内的变量名可以相同
下面代码属于两个局部范围了,因为局部变量的作用域是变量所在的局部范围,出了作用域变量就销毁了(int a = 100就销毁了)。所以在每一个局部范围都定义一个相同的变量是可以的。这个变量只在这个范围内有效。
#include <stdio.h>
void test()
{
int a = 100;
}
int main()
{
int a = 10;
test();
printf("%d\n",a);
return 0;
} 
#include <stdio.h>
int main()
{
int a = 9;
{
int a = 8;
printf("%d\n",a);
}
printf("%d\n", a);
}局部变量的作用域是变量所在的局部范围。不同局部范围内定义相同的变量是可以的。
且遵循“就近原则”。
(!!!)全局变量和局部变量的名字可以相同。
【因为 全局变量 和 局部变量 在内存中存储的位置是不同的:全局变量储存在 “静态区”,而 局部变量存储在 “栈区”】它们是相互独立的存在,它们的同时存在也不会相互影响,所以全局变量和局部变量的名字可以相同。
当全局变量和局部变量名字相同的情况下,局部变量优先;
但是建议不要将全局和局部变量的名字写成一样
#include <stdio.h>
int a = 100;
int main()
{
int a = 10;
printf("%d\n",a);//10
//当全局变量和局部变量名字相同的情况下,局部变量优先
//但是建议不要将全局和局部变量的名字写成一样
return 0;
}4.4 例题(注意事项的结合)
#include <stdio.h>
int x = 5, y = 7;
void swap()
{
int z;
z = x;
x = y;
y = z;
}
int main()
{
int x = 3, y = 8;
swap();
printf("%d,%d\n",x, y);
return 0;
}因为main()函数中的x,y是局部变量,全局变量和局部变量名字相同时,局部变量优先,所以x=3,y=8;
又因为swap()函数中也是局部变量,局部变量出了作用域就销毁了,所以并不会对main()函数中的x,y造成改变。
所以最终的输出结果是x=3,y=8。

边栏推荐
猜你喜欢

【C语言】程序环境和预处理

Little fish sends lidar | just dinner is the first lottery

H7-TOOL串口脱机烧录操作说明,支持TTL串口,RS232和RS485(2022-06-30)
![[shutter -- layout] flexible layout (flex and expanded)](/img/03/0f07a56487f8e91045f9e893e9f96c.png)
[shutter -- layout] flexible layout (flex and expanded)

树莓派3b串口登录前准备工作

Technical scheme of face recognition system

canvas绘制文本和清除绘制

Type-C Bluetooth speaker single C-Port rechargeable OTG solution

USB3.0: layout guide for vl817q7-c0

As a background developer, you must know two kinds of filters
随机推荐
Mysql database [Database Foundation -- introduction]
【leetcode天梯】链表 · 022 链表中倒数第k个节点
三维点云课程(七)——特征点描述
Eight common SQL misuses in MySQL
AE tutorial, how to animate illustrator layered documents in after effects?
UPC 2022 summer personal training game 12 (number of combinations b)
数据链路层 -------- 以太网 和 ARP
移动语义和完美转发浅析
What is weak network testing? Why should weak network test be carried out? How to conduct weak network test? "Suggested collection"
R语言data.table包进行数据分组聚合统计变换(Aggregating transforms)、计算dataframe数据的分组最小值(min)
作为一名后台开发人员,你必须知道的两种过滤器
【C语言】程序环境和预处理
时代潮头,华为将风帆对准数字金融的风与海
什么是弱网测试?为什么要进行弱网测试?怎么进行弱网测试?「建议收藏」
Delete strategy of redis expired key [easy to understand]
[Nuxt 3] (九)服务器路由
【luogu P6656】【LOJ 173】【模板】Runs(字符串)(Lyndon 串)
R language mapping: coordinate axis setting
进程调度的基本过程
[shutter -- layout] linear layout (row and column)