欢迎来到小林的博客!!
      ️博客主页:✈️小林爱敲代码
      ️欢迎关注:点赞收藏✍️留言

      今天给大家分享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++等方面的知识

你们的支持是我最大的动力,希望在往后的日子里,我们大家一起进步!!!