目录
前言
正文
数据类型
变量
命名规则
分类
注意
常量
分类
字符串
转义字符
注释
C语言的注释风格
C++的注释风格
选择语句
if语句
循环语句
while 循环
函数
数组
操作符
关键字
typedef
static
#define定义常量和宏
指针
结构体
总结
前言
在上一篇文章中我详细介绍了C语言中的启蒙代码—Hello Word!中各语句的具体用途与常见错误,前文的目的就是带大家进入C的世界,而本文就是带大家正式在C的世界中远航,让梦启程,争取以后能拿到满意的offer!
注意:图片中代码的头文件位于文件最顶部,因截图无法截取,所以默认已引头文件
图片来源:2020年互联网岗位如何面试拿到满意的Offer? (baidu.com)
正文
本文的目的就是带着大家把C语言中的知识点都过一遍,让大家对C语言有一个立体的认识,后面再对具体的知识点展开详细讲解,所以本文的知识点可能会有点多。秉持着通俗易懂的理念,文中提到的知识都会尽可能简单,配图讲解也会更加详细,争取做到一点就通,点到为止。
数据类型
在C语言中有许多数据类型,这些数据类型有着不同的大小和功能,目的就是将数据分档次,使用起来更方便(对号入座)。可能大家没什么概念,就拿我们日常生活举例,比如我们的人民币,分一元、五元、十元、二十元、五十元和一百元这几个档次(可能大家已经好久没见过纸币了),当购买一根雪糕时,使用五元或十元进行结算即可,没必要使用更高的面额(可能有人想说雪糕刺客),将价格对应存储到我们C语言中,int是4个字节(4个字节存储范围为-2^31~2^31,很大了已经),而long则是4~8个字节,当int储存不了时就需要使用long,就像是遇到雪糕刺客需要面额更大的五十元。
上面的例子只是纵向说明了数据类型的差异,关于float单精度浮点型和double双精度浮点型呢?因为所谓的浮点型就是用来表示小数部分的,也就是精度,其实我们依旧可以用人民币的例子,比如某多多商品价格喜欢标9.9或19.9,这时如果想把这个价格存储在C语言中就需要用到float单精度浮点型,即float price=9.9f; float在使用时需要在数字后面加上f,不加的话默认为double型,关于float的存储范围(即精度范围)—8位有效数字,double就更精准了。
关于float更详细的介绍:float的精度和取值范围_AlbertS的博客-CSDN博客_float精度
最后再来说说字符型,这个不同于前两个不只能表示数字,还能表示英文字母和特殊符号,经过后续的迭代,现在甚至能表示中文(以字符串的形式储存,一个中文两个字节)这是因为char有ASCII码的帮助(美国信息交换标准代码),在ASCII码中,不同的数字有着不同的含义,比如65表示A,97表示字母a,char的大小是1个字节,这是很精准的(相较于上面的数据类型),在后面进行指针操作时,char*能做到只移动一个字节,手术刀般访问内存。
以上就是各数据类型的介绍,大概能看懂就行了。接下来我将用代码的形式再次介绍各数据类型
下面我将给大家介绍各数据类型对应的格式
了解基本格式后,我们现在通过代码来说明各数据类型所占的内存大小
漏了个短整型,格式是%hd——短整形(short),大小是2个字节,用的比较少
//注意:sizeof是库函数,可以计算指定量大小 int main() { printf("%d\n", sizeof(int));//4 printf("%d\n", sizeof(long));//4~8 printf("%d\n", sizeof(long long));//8 printf("%d\n", sizeof(float));//4 printf("%d\n", sizeof(double));//8 printf("%d\n", sizeof(char));//1 return 0; }
常见错误
数据类型没多知识,只要知道基本的类型大小和输出格式就可以使用了
变量
所谓变量就是可变的量,比如我们的年龄、成绩、工资,这些都是可以根据现实情况而改变的量,在我们C语言中,常常需要这样的变量来进行运算赋值,而变量都是我们自己命名的,为了避免混乱,C语言标准就规定了一些变量命名规则
命名规则
1.只能由字母(包括大小写)、数字、下划线组成
2.不能以数字开头
3.长度不能超过63个字符
4.变量名中区分大小写,比如abc和ABC不同
5.变量名不能使用C标准已经预设好的关键字,比如sizeo
分类
我们将变量分为了全局变量和局部变量
全局变量是指作用于全局(整个工程的变量),通常写在函数体之外(包括主函数)或者通过#define进行宏定义。全局变量的作用域是整个工程,生命周期则是整个程序。全局变量是一个比较危险的变量,因为范围太大,因此我们前期尽量使用局部变量。
—局部变量就是指在一个局部内定义的变量,这种变量一般只能在被定义的局部范围内使用,局部变量通常出现于函数体内部(包括主函数)或者在函数之内的有一层{ }内部。局部变量的作用域是变量所在的局部范围,生命周期则是进入作用域开始,出作用域结束。局部变量虽说能力比较有限,但是比较安全,适合前期学习使用
注意
当全局变量与布局变量命名一致即起冲突时,局部变量优先,但局部变量的改变并不会对全局变量造成影响
常量
常量是变量的对立面,即不能被改变的量,比如我们高考分数、圆周率、身份证号码等,C语言中常量的主要作用是直接输出或作为判断依据,一般我们常量出现于以下几个场景。
分类
1.字面常量,这个就是很普通的常量,比如数字100、数字3.14、字母 a等
2.const修饰的常变量,const是常量的意思,将其放在变量定义前,即可将变量锁定为常变量,本质上还是变量。比如 const int age=18,这样表示永远18岁,将其保护起来,一般的赋值方法无法更改值,只能通过指针找到地址的方式改变值。
3.#define定义的标识符常量,这个是一个宏定义,作用于整个工程,还可以解决C4996问题
4.枚举常量,这个常量前期比较少见,关键字是enum,但他本质上是常量,枚举的意思就是一个一个数出来,从0开始
//4.枚举常量 enum Sex { man, woman, secret }; int main() { enum Sex s = man; enum Sex e = woman; enum Sex x = secret; printf("%d %d %d\n", s, e, x); return 0; }
字符串
字符串就是由一串字符组成的串,比如字符H、e、l、l、o串在一起就组成了Hello这个字符串;字符串的结束标志是 \0 ,在C语言中我们的中文是以字符串的形式存储的,需要用到字符数组,空间尽量分配大一些,一个汉字就相当于两个英文字母,换句话说一个汉字占2个字节大小的空间。
\0 是字符串的结束标志,也是字符串的主要特征
转义字符
转义字符,顾名思义就是转变原意的字符,比如我们常见的 \n 在转义字符中表示换行,常常用在printf 中,使打印出来的内容更加清晰;还有比如 \' 表示单个英文单引号 ' ,即我们在想打印 ' 时使用,避免自动与其他单引号组合造成错误;再比如 \xxx ,xxx表示1~3个八进制数字,在数字前加上 \ 后会被编译器当作八进制数字处理,譬如 \130 ,转换成十进制后表示88,对应ASCII码表就是X。
其实在C语言中有许多转义字符,下面就是转义字符汇总表:
因篇幅原因就不一一展示用法 。
注释
注释的存在就是屏蔽代码或解释代码,当我们需要在同一个文件中写入第二个主函数时就可以把前面的注释掉,或者把其他无用的代码注释掉;当我们在写一些比较难理解的代码时也可以加上注释,通过文字提示帮助我们理解代码。
C语言中有两种注释风格,一种是C语言的(/* */),另一种是C++的( // )。因为C++的注释方法快捷高效,且C语言的注释风格不能嵌套注释,于是C语言就兼容了C++的注释风格,当然两者都可以使用,因地制宜才能发挥注释的最大价值。
关于注释:代码在编译过程中会将注释部分自动删除,因此注释丝毫不影响代码运行。
C语言的注释风格
C++的注释风格
关于注释的快捷键,Ctrl+K+C进行注释,Ctrl+K+U取消注释