C语言的变量与常量 字符字符串与转义字符详解

 更新时间:2021年10月18日 09:43:30   作者:HAORANCHIDOUZI  
这篇文章主要介绍了详解C语言的变量与常量 字符字符串与转义字符,包括其之间的区别是C语言入门学习中的基础知识,需要的朋友可以参考下

一.变量

1.1定义变量的方法

如图中所示,变量可被定义为各种数据类型,如int 整型 char字符数据类型,short短整型,float单精度浮点数,double双精度浮点数等等。一般在变量定义后,需给变量赋值,如图中对所有变量给与了0的赋值,这也是一个良好的代码习惯。

1.2变量的分类

变量分为局部变量和全局变量。

局部变量:定义在代码块内部的变量,一个大括号中所有代码便是一个代码块,局部变量只在代码块中存在和生效,如下图中这种情况

变量被定义a和第一个输出函数printf在同一个代码块中,所以输出函数可以成功的输出代码a的值0。但变量b被定义的代码块和第二个输出函数printf不在同一个代码块中,变量b只在其被定义的代码块中存在,在第二个输出函数printf所在的代码块中不存在,所以编译器会报错,未定义标识符b。

如果是上图这种情况,变量a的值是可以被输出的,因为输出函数printf仍在变量a所在的这个整体的代码块(大括号之中)。

如上的变量a与变量b,被定义在某一个代码块中的变量,即为局部变量。

全局变量:被定义在代码块之外的变量,但要保证在#include<stdio.h>之后才定义,作用域为全体范围,整个程序的作用域该变量均存在。 

如上图该程序的输出结果为10。但当代码块中出现和全局变量同名的变量时,全局变量的值会被覆盖,如下图。会将代码块中局部变量的值覆盖全局变量的值,但仅在该代码块中起到这样的效果,如果其它代码块中没有和全局变量同名的局部变量,仍以全局变量的值为该变量的值。

1.3变量的使用

先定义变量,然后变量可以参加加减乘除等运算,也可以使用printf输出函数打印该变量的值,或者使用scanf输入函数,从外部输入对该变量进行赋值。

输入该变量的值时候,要在该变量前面加&符号,&符号的意思是取地址,又叫取地址符号。

二.常量

C语言中常量分为字面常量(包括字符常量,const 修饰的常变量,#define定义的标识符常量,枚举常量四种常量。

2.1字面常量

字面常量即用数字和字符组成的常量,如下图所示。

 2.2 const修饰的常变量

如上图所示,对在定义一个变量的时候在前面加上const代表该变量是不可修改的。但该变量本质上还是作为一个变量存在,又被称为常变量。例如在定义数组的时候只能使用常量,假如使用了const修饰的常变量,大部分编译器会报错(因为在C99标准之前,变长数组,不允许用变量指定数组大小)。如下图所示,定义数组大小只可以用常量!!

 2.3#define定义的标识符常量

 

如上图所示可以用#define+常量名+具体大小的形式定义标识符常量,上图的MAX便是这么定义的,在代码习惯中一般用大写字母。

2.4 枚举常量

枚举的意思是可以一一列举,如生活中的性别(男性和女性),人种(黄种人,白种人和黑种人),这样种类比较少的常量可以用枚举类型,作为枚举常量。

定义枚举类型的时候如上图所示,枚举这种类型可能的取值就是枚举常量。枚举常量和枚举常量之前用逗号隔开,所有的枚举常量被放在一个大括号中,在该大括号的末尾用分号作为结束。 

三.字符和字符串

3.1 定义

由单引号引起的单个字符或者字母被成为字符,如'a'  'b'均为字符,由双引号引起的一串字符被成为字符串如"abc" "sfc"都被成为字符串,""也是字符串的一种,被成为空字符串。如下图所示,'a' '#'为字符,"abc","a","",均为字符串。

 3.2字符串的应用

可以将字符串放在在字符数组中,如定义一个字符数组 char arr1[]="abc";这里的arr为该字符数组的名称。但不能将字符串放在一个变量中,如char ch="abc";这样的形式是错误的。

字符串还可以用strlen函数去计算长度,但在使用strlen计算字符串长度之前,去引用头函数#include<string.h>。在计算字符串长度的时候每一个字符是1长度,但转义字符也是一个字符,整体算一个长度。在用strlen函数计算长度的时候'\0'为终止的位置,字符串后自带一个'\0',字符后需要人为添加'\0',否则在计算字符长度的时候,会一直到内存中出现'\0'的时候才会停止,这样的话字符的长度便成为了一个随机数,显然是不行的,所以要人为添加'\0'。

常用的转义字符如上图,\ddd的意识为后面跟一个,两个或者三个8以下的数字时,需要将整体八进制转换为十进制,再根据ASCII码值输出ASCI码值对应的字符。\xdd的意思为后面\x跟着两个十六进制的数字,整体为一个转义字符,将十六进制的转化为十进制,再输出其对应的字符。

3.3转义字符

即在C语言中,有时间一些字符的意思可能被编译器曲解,所以这时候需要用转义字符来转变原来的意思,得到我们想要的意思。

例如在上图中,我们想要打印test.c这个文件的位置,但结果缺不尽人意,因为两个\t被识别为转义字符,意识是缩进四格。\104被识别为\DDD的形式,104被当作一个八进制的数字,在转化为十进制的数后输出了其ASCII码值对应的字符——大写字母D。举例,如下图所示\DDD和\XDD的情况。

如上图所示,\DDD先将其转化为十进制,\071转化为十进制是57,而57对应的ASCII值对应的字符为9,所以打印输出了9.\XDD同理先将转化为十进制,\x62转化为10进制是98,而98对应的ASCII值对应的字符为b。故printf函数打印了小写字母b。

如果不想造成上上上图的困扰,正确的打印该文件在计算机中的存储位置,这时候就需要在每个\再加一个\,对其进行转移,便能正确输出了,如下图所示。

四.注释

注释分为C注释方式和C++注释方式。//C99之后引入的注释方式 ---> C++的注释风格/*  C99之前C语言的注释方式 --> C的注释风格, 缺陷是不支持嵌套注释*/

上图为C语言的注释风格,缺陷是不能进行嵌套注释,会在遇到第一个*/时候注释停止。

上图是C++语言的注释风格,//后整行皆为注释内容,也是现在比较流行的注释方式。 

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • C语言实现班级档案管理系统课程设计

    C语言实现班级档案管理系统课程设计

    这篇文章主要为大家详细介绍了C语言实现班级档案管理系统课程设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • 浅析C语言位域和位段

    浅析C语言位域和位段

    以下是对C语言中的位域和位段进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • Cocos2d-x触摸事件实例

    Cocos2d-x触摸事件实例

    这篇文章主要介绍了Cocos2d-x触摸事件实例,本文代码中包含大量注释来说明Cocos2d-x中的触摸事件使用示例,需要的朋友可以参考下
    2014-09-09
  • C++的静态成员变量和静态成员函数详解

    C++的静态成员变量和静态成员函数详解

    这篇文章主要为大家介绍了C++的静态成员变量和静态成员函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • Qt控件点击消息获取的方法详解

    Qt控件点击消息获取的方法详解

    本文将利用Qt中的QLabel、QPushButton这两个控件,为大家详细介绍一下Qt控件点击消息获取的方法,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-06-06
  • VC判断进程是否具有administrator权限的方法

    VC判断进程是否具有administrator权限的方法

    这篇文章主要介绍了VC判断进程是否具有administrator权限的方法,在Windows应用程序设计中具有一定的实用价值,需要的朋友可以参考下
    2014-10-10
  • C语言线性代数算法实现矩阵示例代码

    C语言线性代数算法实现矩阵示例代码

    这篇文章主要为大家介绍了使用C语言线性代数的算法来实现矩阵示例代码,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • C++ 二维数组传参的四种方式

    C++ 二维数组传参的四种方式

    C++的二维数组里面,通过用数组名传参,传过去后数组名会退化成一个一维数组指针,所以C++的函数参数不能像C语言一样去写,本文主要介绍了C++ 二维数组传参的四种方式,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • C++实现神经网络框架SimpleNN的详细过程

    C++实现神经网络框架SimpleNN的详细过程

    本来自己想到用C++实现神经网络主要是想强化一下编码能力并入门深度学习,对C++实现神经网络框架SimpleNN的详细过程感兴趣的朋友一起看看吧
    2021-08-08
  • C语言进阶教程之函数指针详解

    C语言进阶教程之函数指针详解

    函数指针是一个指针变量,它可以存储函数的地址,然后使用函数指针,下面这篇文章主要给大家介绍了关于C语言进阶教程之函数指针的相关资料,需要的朋友可以参考下
    2022-04-04

最新评论