【C语言复习】第五篇、关于C语言变量,常量,字符串,转义字符的知识

目录

第一部分、关于变量

1、什么是变量?变量的分类?

2、变量的作用域?变量的生命周期?

第二部分、关于常量

1、什么是常量?

2、如何定义常量?

第三部分、关于字符串

1、什么是字符串?

2、如何定义字符串数组?

3、字符串的结束标志?

3.1、如何验证编译器是通过寻找\0来判断一个字符串是否结束的?

3.2、如何验证结束标志\0是不算在字符串长度中的?

3.3、如何验证结束标志\0是不算在字符串内容中的?

第四部分、关于转义字符

1、什么时候需要转义?

2、常见的转义字符        

3、练习一下


第一部分、关于变量

1、什么是变量?变量的分类?

        变量:可以改变的量就叫变量,例如体重、年龄等。

        变量的分类:可分为全局变量和局部变量,全局变量:定义在main{}外面的变量;局部变量:定义在main{里面的变量}。

2、变量的作用域?变量的生命周期?

        作用域:某个变量它能够发挥作用的范围,超过这个范围就无法使用。例如:跨文件的变量,必须要利用extern来实现。

        生命周期:变量创建和销毁的时间段。

第二部分、关于常量

1、什么是常量?

          常量:不可以改变的量,例如圆周率,性别等。

2、如何定义常量?

  • const int a = 10; const修饰的常变量(易混淆static)
  • enum 名称 { a,b,c}; 枚举常量
  • #define max 10; #define定义的常量

示例如下: 

#define max 100;

enum SEX
{
    aa,//从0开始算
    bb = 2,
    cc
};

int main()
{
        //const 修饰的常变量
        const int a = 10;//此时a值无法改变,但是a只能称作常变量,还是属于变量范畴,让a做a[a],是错误的
        printf("%d\n", a);
        //宏定义的常量
        int max1 = max;     
        printf("%d\n", max1);
        //枚举常量
        enum SEX val1 = aa;
        printf("%d\n", val1);
    
        return 0;
}

第三部分、关于字符串

1、什么是字符串?

        由双引号引起来的一串字符称为字符串。

        注意:单引号引起来的是一个字符,双引号引起来的是字符串所以单个字母用单引号,字符串用双引号。

//下面这两句话是等效的,%c打印一个字符,和单引号‘’相对应   
//%s打印一个字符,和双引号“”相对应
printf("%s\n","a"); 
printf("%c\n",'a');

2、如何定义字符串数组?

  •         方式一:char val[] = "aaasdadasfd";
  •         方式二:char val[] = {'a','a','a','d','a','s','f','d','\0'};

        注意:有大括号用单引符,无大括号用双引号。

        例如错误的表达方式:char val[] = {"aaasdadasfd"};这是一种错误的定义方式,没有这种定义方式。

3、字符串的结束标志?

        首先在编译器中,字符串一定是要有结束标志的符号,也就是\0,因为在内存中,去寻找字符串或者计算字符串长度时都必须要找到结束标志,不然无法确定内存中的多少到多少是一个字符串。

         注意:字符串的结束标志是一个 \0 的转义字符,编译器去判断一个字符串是否结束,就是看结尾是否有\0,但是\0不算做字符串的内容,也不算在字符串长度里面strlen计算不算,但是sizeof算,如下截图)。

3.1、如何验证编译器是通过寻找\0来判断一个字符串是否结束的?

3.2、如何验证结束标志\0是不算在字符串长度中的?

3.3、如何验证结束标志\0是不算在字符串内容中的?

第四部分、关于转义字符

1、什么时候需要转义?

         例如:在C语言编译器中,我们都知道\n是用来换行的,如下:

printf("\n");//换行

        现在我不想让它换行,我就想单纯打印\n这两个字符。那该如何打印呢?

        这个就需要通过斜杠\来进行转义,将\n换行的含义进行转换,转换为2个字符。如下:

        通过上面的例子分析可知,当某两个字符或几个字符组合在一起时C编译器会默认它有某种功能,从而就不会去打印这几个字符,而是去实现他们组合的功能。

        换句话说就是,就是当编译器无法识别当前我想打印的内容时,这个时候就需要用到斜杠\去转义,实现我们想打印的内容。

2、常见的转义字符        

转义字符 含义

\'

用于表示字符常量'

\"

用于表示一个字符串内部的双引号"

\\

用于表示一个反斜杠\

\n

换行

\r

回车

\t

水平制表符(行输出Tab)

\v

垂直制表符(列输出Tab)

\ddd

ddd表示1~3个八进制的数字,对应ASCII码表

\xdd

dd表示2个十六进制数字,对应ASCII码表

\a

警告字符,蜂鸣

\b

退格符

\f

进纸符

3、练习一下

        数一下面字符串的长度:

char arr[] = "c:\test\628\test.c";

         结果应该是:14个。

        这里需要理解的就是\628与上表格中的特殊转义字符\ddd,很类似,但是需要注意的是八进制数据,8已经超过8进制了,因此8单独算一个字符。\62算一个特殊字符。

猜你喜欢

转载自blog.csdn.net/Learning1232/article/details/129999870