WHCSRL 技术网

变量的生命周期和作用域,常量的分类,字符串转义字符以及注释

小伙伴们,大家好啊,我又来了,继续写博客,写博客不仅可以检验自己学习成果还可以与博客的朋友们一起探讨与分享和交流。

今天我们讲一下c语言常见的基础知识没有他们的支持是不可以的哦

这里我们只是浅略的了解一下也就是初步认识一下以后的博客我会给大家详细的讲解一下,好了我们进入正题,那我们开始吧

目录

变量的生命周期和作用域

生命周期

作用域

常量的分类

字面常量

#define定义的标识符常量

const修饰的常变量

枚举常量

字符串转义字符以及注释

字符串

转义字符

注释


变量的生命周期和作用域

生命周期

生命周期官方解释:变量的生命周期就是从创建该变量开始到该变量被销毁的这一段时间,
各种变量的生命周期

通俗的讲就是在我们写c语言的时候,我们首先会创建变量,然后当代码执行完成时,就结束了改代码的生命周期(需要注意的是生命周期指的是时间不要和我们后面的作用域搞混淆了)。

​​​​​​​作用域

变量的作用域官方解释:一段程序代码中所用到的名字并不总是有效/可用 的 ,而限定这个名字的可用性的代码范围就是这个名字的作用域。

既然是变量的作用域我们就分为局部变量的作用域和全局变量的作用域

全局变量的作用域就是在整个我们创建的工程中都可以使用

而局部变量我们只能限制在代码块{}里使用,出了代码块则不能使用

给大家举个例子

  1. #include<stdio.h>
  2. int main()
  3. {
  4. {
  5. int b = 20;
  6. }
  7. printf("%%%%d ", b);
  8. return 0;
  9. }

这里就会出现问题int b是局部变量而在b所在代码块的外边打印;如图

 这里会显示b是未声明的标识符,这也就证明了局部变量的作用域出了代码块就会结束

总结一下

1. 局部变量的作用域是变量所在的局部范围。
2. 全局变量的作用域是整个工程。

常量的分类

常量的分类有四种1:字面常量 2:#define定义的标识符常量 3:const修饰的常变量

4:枚举常量

字面常量

也就是字面的常量呗(我好像解释个寂寞),没错我们平常写的文字,数字,字符等等都是字面常量

#define定义的标识符常量

官方解释:定义一个标识符来表示一个常量,其特点是定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了

那它的用途是什么:当需要改变这个常量的值时,就不需要对整个程序一个一个进行修改,只需修改宏定义中的常量即可且当常量比较长时,使用宏就可以用较短的有意义的标识符来代替它,这样编程的时候就会更方便,不容易出错。因此,宏定义的优点就是方便和易于维护。

通俗的讲,就是使用简便,当我们写一个庞大的工程时,如果突然需要修改原来的值,这是我们一个一个修改会不会浪费我们很长的时间,我们就可以直接改宏定义的值就可以,尤其在我们后面我会给大家讲一些小游戏就用到define了

我们简单地使用一下

  1. #include<stdio.h>
  2. #define MAX 100
  3. int main()
  4. {
  5. printf("%%%%d ", MAX);
  6. return 0;
  7. }

 

这是我们就很好的打印出来100了

const修饰的常变量

官方解释:C语言中const修饰的量是常变量,它与普通变量的编译方式一样,唯一的区别是常变量定义后不能做左值。C++中const修饰的才是常量。

其实作用就是在你不想要在后面修改原来的值时候就会使用

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int a = 10;
  5. a = 20;
  6. printf("%%%%d ", a);
  7. return 0;
  8. }

 

这是我没有加入const就毫不犹豫的输出了20
当我们加了const呢再看一看
  1. #include<stdio.h>
  2. int main()
  3. {
  4. const int a = 10;
  5. a = 20;
  6. printf("%%%%d ", a);
  7. return 0;
  8. }

这是就会出现错误

 

总结:当我们不想我们原先写的值被修改的话,我们就可以使用const

枚举常量

枚举常量从字面上理解不就是一 一列举出来么

举个例子

  1. enum
  2. {
  3. //我们列举一下键盘的上下左右键
  4. left,
  5. right,
  6. up,
  7. down
  8. };

字符串转义字符以及注释

字符串

字符串是用双引号引的字符

而字符我们用''(单引号)引的字符

那我们看看字符串与字符有哪些区别?

  1. #include<stdio.h>
  2. int main()
  3. {
  4. char arr1[] = "abc";
  5. char arr2[] = { 'a','b','c' };
  6. return 0;
  7. }

这时我们进行调试一下看看数组的情况

怎样进行调试呢

首先先按f10然后

调试结果

 我们可以看出arr1里有a,b,c,.而arr2里有a,b,c

显然得出结论在字符串中结尾都会有个

那是什么呢

其实是我们字符串的结束标志

那接下来我们分别看一下两个数组分别能打印出什么呢

怎么回事,为什么会出现烫烫烫呢,什么鬼?

那我们在打印大小看看

 这时我们就分析一下刚才说字符串有结束标志,但我没有说字符有结束标志,奥知道了,其实字符没有结束标志,那编译器就会一直编译直到找到则结束完

转义字符

 转义字符官方解释:转义字符是一种特殊的字符常量。转义字符以反斜线""开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。

我们先将转义字符的表格拿出来

 

我们来举个例子
  1. #include<stdio.h>
  2. int main()
  3. {
  4. printf("%%%%d ", strlen("abcdef"));
  5. printf("%%%%d ", strlen("c: est628 est.c"));
  6. return 0;
  7. }

大家看完表格猜猜答案是多少呢

没错答案是14

这里的 ,62,都代表一个,所以结果为14

为什么可以算一个呢?

看了上面的表知道 是水平制表符

而ddd(为8进制0-7)所以8也算一个

那xhh呢?

其中x代表16进制数字那hh就为0-15呗

注释

注释的作用

1.代码中有不需要的代码可以直接删除,也可以注释掉
2. 代码中有些代码比较难懂,可以加一下注释文字
在我们日常写代码的时候要使用注释,为了以后看代码轻松一下,但也没有必要在没用的代码进行注释,反而得不偿失
代码的一些注释风格
c语言中/*  */但是不能嵌套使用
c++则使用//

推荐阅读