欢迎来到小林的博客!!
️博客主页:✈️小林爱敲代码
️欢迎关注:点赞收藏✍️留言
今天给大家分享C语言中的三部分内容,希望大家在学习C语言的道路上畅通无阻,也希望我们大家一起进步。每日一句: 人生的路,靠的是自己一步一步去走。
大纲:
目录
- 1. 第一个C语言程序
- 2. 数据类型
- 3. 变量,常量
- 3.1 变量的定义
- 3.1.2 变量的命名规则
- 3.2 变量的之间的运算
- 3.3 常量
- 3.3.1 const常量
- 3.3.2 define常量
- 3.4 局部变量、全局变量
- 3.4.1 作用域
- 3.4.2 变量的生命周期
- 3.5 全局变量
- 总结:
1. 第一个C语言程序
因为小林用的是VS2019 编译器,所以和大家会有差异。
首先打开编译器,创建项目。
然后选空项目,下一步。
然后创建项目
然后新建项
我们选择Cpp文件,切记,文件后缀名一定要改成 .c ,然后添加
然后我们就进到了以下界面,如果编译器是 2019的话,那么需要加上第一行来屏蔽输入警告,其他编译器则不用,所以不用担心。
然后就可以开始敲代码了。我们先敲一个main函数,main函数是程序的执行入口,也就意味着任何一个C语言程序 都是从main函数开始执行的。
然后我们写一个输出语句。
再引上对应的头文件。因为printf函数 是C语言提供的,如果我们要使用,需要和它打个”招呼”,也就是引用头文件。使用printf需要引用stdio.h的头文件。
然后我们运行一下程序,VS编译器环境下的运行快捷键是ctrl+f5。
我们就发现我们的结果打印出来了,这就是第一个C语言程序。
2. 数据类型
C语言中常用的数据类型有以下几种
char 字符型 1字节short 短整形2字节int整形 4字节long 长整型 不小于4字节float 单精度浮点型4字节double 双精度浮点型 8字节
字符型 : 1个字符,对应ASCII 码值
短整形 :范围在 -32768(-2^15) ~ 32767(2^15 – 1)之间的整数
整形 : 范围在 (-2)^31 ~ (2^31)-1 之间的整数
长整形 : C语言没有明确规定,只要求long的大小不能小于int。
单精度浮点型 : 简单理解就是小数。
双精度浮点型 :精度更高的小数。
ASCII表
那我们写段代码来测试一下
#includeint main(){char ch = 'a'; //字符型变量创建short sh = 20; //短整型变量创建int i = 30; //整形变量创建long lg = 40;//长整型变量创建float f= 5.5f; //单精度浮点型变量创建double d = 6.6; //双精度浮点型变量创建printf("字符型:%c 所占字节: %d\n",ch,sizeof(ch));printf("短整形:%d所占字节: %d\n", sh, sizeof(sh));printf("整形:%d所占字节: %d\n", sh, sizeof(i));printf("长整形:%d所占字节: %d\n", lg, sizeof(lg));printf("单精度浮点型:%f所占字节: %d\n", f ,sizeof(f));printf("双精度浮点型:%lf所占字节: %d\n", d, sizeof(d));return 0;}
sizeof 是一个关键字,它会返回一个数在内存所占的字节个数。
3. 变量,常量
生活中总有些值是不变的(圆周率,性别,身份证号码,血型)。
也总一些值是会变的(年龄,工资,体重) 等等
而会变的值在C语言中被称为变量,不变的值被称为常量。
所以变量通常用来存储会变的值,常量用来存储不变的值。
3.1 变量的定义
定义变量很简单,只需要 (数据类型名) + 变量名 ,即可定义一个变量。
假设我要定义一个字符型变量,那么就是 char(数据类型名) + ch(变量名);即可定义成功。
int main(){char ch; //定义字符型变量int i; //定义整形变量long l;//定义长整型变量float f; //定义浮点型变量........return;}
变量定义成功了,但是变量肯定会有值。如果我们不主动给变量赋值,那么局部变量的值就是随机值。所以我们要给变量赋值,赋值的方法也很简单。
变量名 = 值;
int main(){char ch; //定义字符型变量int i; //定义整形变量long l;//定义长整型变量float f; //定义浮点型变量ch = 'a'; //ch变量存储 'a' 这个字符i = 10; //i变量存储了 10这个整数l = 100;//l变量存储了100这个整数f = 5.5 ;//f存储了5.5这个整数........return;}
变量存储了一个值之后,我们使用变量,就是使用这个值,比如说我们的变量i 存储了10,那么我们打印 i 就会打印10。
变量也可以在定义的时候直接赋值。
数据类型名 变量名 = 值
int main(){int i = 10;int b = 20;}
3.1.2 变量的命名规则
变量的命名规则必须严格按照以下要求:
1. 只能由字母(大写或小写),数字和下划线(_)组成
2. 不能超过63个字符
3. 变量名区分大小写
4. 不能以数字开头
5. 变量名不能使用关键字
6.同一个作用域不能出现相同的变量名
3.2 变量的之间的运算
上面说到,变量是用来存储一个值的,那么这就意味着变量和变量之间可以存在运算。
假设我有3个变量 , 变量 a = 10,变量 b = 20, c用来存储a 和 b的和。
#includeint main(){int a = 10;int b = 20;int c = a + b;printf("c = %d\n", c); return 0;}
c 存储的是 a+b的值,那我们打印c来看看。
我们进行了 变量之间的加法运算,那我们分别来试试减法,乘法,除法。
我们发现都可以进行运算,但是要注意一点的是,整数的除法运算只会取2个数的商,而不会取余数,比如 5 / 2 的商是2,所以相除的结果是2。
3.3 常量
变量是会变的值,那么常量自然就是不能变的值,变量和常量的区别就是,常量只能在定义的时候赋值,一旦常量定义完之后,那么常量的值无法被修改。
3.3.1 const常量
const也是一个关键字,它可以让一个变量变成常量,但严格意义来说不是真正的常量。而是常变量,因为被 const修饰的常量可以通过特殊的方式修改它的值。当然,那是指针的内容了,这里我们不深入探讨。
const修饰的常量定义:const 数据类型 变量名 = 值
int main(){const int i = 10;return 0;}
const修饰过后,i的值就无法再被改变。我们尝试把i修改成20试试。
编译器就给我们报了个错误,因为常量无法修改。所以当你期望一个值无法被修改时,可以加const关键字对其修饰。
3.3.2 define常量
常量的另一种定义方法,就是用define关键字定义,这个是真正意义上的常量,一旦定义,谁也无法修改。
定义方法: #define 变量名 值
这种常量建议定义成全局(就是在main函数外面创建)。
#define i 10 //常量定义int main(){i = 20; //尝试修改常量的值return 0;}
然后我们尝试修改i的值。
一样,报错。
3.4 局部变量、全局变量
局部变量,顾名思义,就是只能在一段范围内才能使用,一旦出来这个范围,那么就无法在使用这个变量。
3.4.1 作用域
在作用域范围内创建的局部变量,只能在当前作用域。什么是作用域呢?很简单,我们把 一段花括号{ } 之间的位置看成一个作用域。而在作用域里面创建的变量,出了作用域,就无法使用了。
#includeint main(){{int i = 10;i = 20;}//作用域外使用ii = 30; return 0;}
我们会发现在作用域外使用 i ,会提示未定义。
所以,i 就是所在作用域内的一个局部变量。一旦出了这个作用域, i 的生命周期也结束了。
3.4.2 变量的生命周期
每个变量都有自己的生命周期,一旦变量的生命周期结束了,就意味着这个变量被销毁了,不复存在了。而一个变量的生命周期,就是出了 它的作用域开始。
int main(){int a = 10;{//作用域的开始int b = 20;{ //作用域开始int i = 10;i = 20;}//出了作用域后,i的生命周期结束了}//出了这个作用域后,b的生命周期结束了return 0;}//出了这个作用域后,a的生命周期结束了
如图,变量的生命周期,从变量的创建开始,到出作用域后结束。
结论:
1.局部变量的生命周期,从变量创建的所在作用域开始,到出此作用域结束。
2.在当前作用域创建的变量,只能在当前作用域的范围内使用,一旦出了此作用域,那么该变量就无法使用,因为变量的生命周期结束,变量已经销毁。
3.5 全局变量
局部变量的作用域为它创建时所在的作用域,那么全局变量的作用域就是整个程序。也就说全局变量在一个程序中的任何位置,都可以使用。 全局变量的生命周期就是整个程序的生命周期,程序不结束,全局变量不销毁。
全局变量定义:不在函数任意一个作用域里面定义的变量,就是全局变量。
#includeint d = 100; //全局变量定义int main(){int a = 10;{int b = 20;{ int i = 10;i = 20;}}return 0;}
我们可以看到d这个变量,它不在任何一个作用域里面,所以d是个全局变量。在任何地方可以使用。
那么局部变量和全局变量名一样怎么办?
那么会优先使用局部变量,就近原则。
总结:
如果有写的有什么不好的地方,希望大家指证出来,我会不断的改正自己的错误。如果感觉写的还可以,可以点赞三连一波哦~后续会持续为大家更新大纲上的内容,以及数据结构,C++等方面的知识
你们的支持是我最大的动力,希望在往后的日子里,我们大家一起进步!!!