初始C语言——梦启程的地方

简介: 数据类型变量命名规则分类注意常量分类字符串转义字符注释C语言的注释风格C++的注释风格

目录


前言

正文

数据类型

变量

命名规则

分类

注意

常量

分类

字符串

转义字符

注释

C语言的注释风格

C++的注释风格

选择语句

if语句

循环语句

while 循环

函数

数组

操作符

关键字

typedef

static

#define定义常量和宏

指针

结构体

总结


前言


 在上一篇文章中我详细介绍了C语言中的启蒙代码—Hello Word!中各语句的具体用途与常见错误,前文的目的就是带大家进入C的世界,而本文就是带大家正式在C的世界中远航,让梦启程,争取以后能拿到满意的offer!


 注意:图片中代码的头文件位于文件最顶部,因截图无法截取,所以默认已引头文件


f4dcec5afc2f68a71bebabb5d806eb5.png


图片来源: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*能做到只移动一个字节,手术刀般访问内存。


image.png


以上就是各数据类型的介绍,大概能看懂就行了。接下来我将用代码的形式再次介绍各数据类型


59c598229d4ef520691cd8105bf6418.png


下面我将给大家介绍各数据类型对应的格式


7fe17d2911375bd38dd303e04ac91fe.png


了解基本格式后,我们现在通过代码来说明各数据类型所占的内存大小

漏了个短整型,格式是%hd——短整形(short),大小是2个字节,用的比较少


c5464601d1621e35ea73430dac757af.png

//注意: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;
}

常见错误 


fecf468ab486603d3aa3bf8f57948db.png


数据类型没多知识,只要知道基本的类型大小和输出格式就可以使用了


变量


所谓变量就是可变的量,比如我们的年龄、成绩、工资,这些都是可以根据现实情况而改变的量,在我们C语言中,常常需要这样的变量来进行运算赋值,而变量都是我们自己命名的,为了避免混乱,C语言标准就规定了一些变量命名规则


acd040a7f28e57ff601e461475b3b6e.png

命名规则


1.只能由字母(包括大小写)、数字、下划线组成

2.不能以数字开头

3.长度不能超过63个字符

4.变量名中区分大小写,比如abc和ABC不同

5.变量名不能使用C标准已经预设好的关键字,比如sizeo





分类


我们将变量分为了全局变量和局部变量


全局变量是指作用于全局(整个工程的变量),通常写在函数体之外(包括主函数)或者通过#define进行宏定义。全局变量的作用域是整个工程,生命周期则是整个程序。全局变量是一个比较危险的变量,因为范围太大,因此我们前期尽量使用局部变量。


30fbc9e2f789d492e98b57b9b5bba06.png


—局部变量就是指在一个局部内定义的变量,这种变量一般只能在被定义的局部范围内使用,局部变量通常出现于函数体内部(包括主函数)或者在函数之内的有一层{ }内部。局部变量的作用域是变量所在的局部范围,生命周期则是进入作用域开始,出作用域结束。局部变量虽说能力比较有限,但是比较安全,适合前期学习使用


9a8817e71207f5d6b0aa75ddb26cd4e.png


590e0ea35d20c183c419dd3f464cdb2.png


注意


当全局变量与布局变量命名一致即起冲突时,局部变量优先,但局部变量的改变并不会对全局变量造成影响

fd6c49fa35c60b4fab6178553ecf861.png


常量


常量是变量的对立面,即不能被改变的量,比如我们高考分数、圆周率、身份证号码等,C语言中常量的主要作用是直接输出或作为判断依据,一般我们常量出现于以下几个场景。

分类


1.字面常量,这个就是很普通的常量,比如数字100、数字3.14、字母 a等


bf3b3fc31b7e1abb9262e514a9026d8.png


2.const修饰的常变量,const是常量的意思,将其放在变量定义前,即可将变量锁定为常变量,本质上还是变量。比如 const int age=18,这样表示永远18岁,将其保护起来,一般的赋值方法无法更改值,只能通过指针找到地址的方式改变值。


ad95a9f53b1c167bbaf5f258d83699a.png


3.#define定义的标识符常量,这个是一个宏定义,作用于整个工程,还可以解决C4996问题

4b8a1f1495f15556a07ade716fcbb2c.png


4.枚举常量,这个常量前期比较少见,关键字是enum,但他本质上是常量,枚举的意思就是一个一个数出来,从0开始 


d9dfb8e7f26a6ba0923a49beaddb96d.png


//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个字节大小的空间。


a12a7c30705b38ac36a330ba14189ba.png


\0 是字符串的结束标志,也是字符串的主要特征


转义字符


转义字符,顾名思义就是转变原意的字符,比如我们常见的 \n 在转义字符中表示换行,常常用在printf 中,使打印出来的内容更加清晰;还有比如 \' 表示单个英文单引号 ' ,即我们在想打印 ' 时使用,避免自动与其他单引号组合造成错误;再比如 \xxx ,xxx表示1~3个八进制数字,在数字前加上 \ 后会被编译器当作八进制数字处理,譬如 \130 ,转换成十进制后表示88,对应ASCII码表就是X。


e12f751b652e78f0f37e1e4fe90c5dc.png


其实在C语言中有许多转义字符,下面就是转义字符汇总表:

因篇幅原因就不一一展示用法 。


c7acc8cd0ca045466f4acf0b9cd9382.png

注释


注释的存在就是屏蔽代码或解释代码,当我们需要在同一个文件中写入第二个主函数时就可以把前面的注释掉,或者把其他无用的代码注释掉;当我们在写一些比较难理解的代码时也可以加上注释,通过文字提示帮助我们理解代码。


C语言中有两种注释风格,一种是C语言的(/*  */),另一种是C++的( // )。因为C++的注释方法快捷高效,且C语言的注释风格不能嵌套注释,于是C语言就兼容了C++的注释风格,当然两者都可以使用,因地制宜才能发挥注释的最大价值。


关于注释:代码在编译过程中会将注释部分自动删除,因此注释丝毫不影响代码运行。


C语言的注释风格


28c7ba457dc2748a882282e7cd6965b.png


C++的注释风格



86db5cec1a0b375817203644a652186.png


关于注释的快捷键,Ctrl+K+C进行注释,Ctrl+K+U取消注释


目录
相关文章
|
C语言 C++
初始C语言——梦启程的地方
选择语句 if语句 if 单分支 if 多分支 循环语句 while 循环 函数 数组 操作符 关键字 typedef static #define定义常量和宏 结构体 总结
70 0
初始C语言——梦启程的地方
|
1月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
34 3
|
8天前
|
C语言
c语言调用的函数的声明
被调用的函数的声明: 一个函数调用另一个函数需具备的条件: 首先被调用的函数必须是已经存在的函数,即头文件中存在或已经定义过; 如果使用库函数,一般应该在本文件开头用#include命令将调用有关库函数时在所需要用到的信息“包含”到本文件中。.h文件是头文件所用的后缀。 如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。 如果被调用的函数定义出现在主调函数之前可以不必声明。 如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必多所调用的函数在做声明
24 6
|
28天前
|
存储 缓存 C语言
【c语言】简单的算术操作符、输入输出函数
本文介绍了C语言中的算术操作符、赋值操作符、单目操作符以及输入输出函数 `printf` 和 `scanf` 的基本用法。算术操作符包括加、减、乘、除和求余,其中除法和求余运算有特殊规则。赋值操作符用于给变量赋值,并支持复合赋值。单目操作符包括自增自减、正负号和强制类型转换。输入输出函数 `printf` 和 `scanf` 用于格式化输入和输出,支持多种占位符和格式控制。通过示例代码详细解释了这些操作符和函数的使用方法。
35 10
|
21天前
|
存储 算法 程序员
C语言:库函数
C语言的库函数是预定义的函数,用于执行常见的编程任务,如输入输出、字符串处理、数学运算等。使用库函数可以简化编程工作,提高开发效率。C标准库提供了丰富的函数,满足各种需求。
|
27天前
|
机器学习/深度学习 C语言
【c语言】一篇文章搞懂函数递归
本文详细介绍了函数递归的概念、思想及其限制条件,并通过求阶乘、打印整数每一位和求斐波那契数等实例,展示了递归的应用。递归的核心在于将大问题分解为小问题,但需注意递归可能导致效率低下和栈溢出的问题。文章最后总结了递归的优缺点,提醒读者在实际编程中合理使用递归。
54 7
|
27天前
|
存储 编译器 程序员
【c语言】函数
本文介绍了C语言中函数的基本概念,包括库函数和自定义函数的定义、使用及示例。库函数如`printf`和`scanf`,通过包含相应的头文件即可使用。自定义函数需指定返回类型、函数名、形式参数等。文中还探讨了函数的调用、形参与实参的区别、return语句的用法、函数嵌套调用、链式访问以及static关键字对变量和函数的影响,强调了static如何改变变量的生命周期和作用域,以及函数的可见性。
29 4
|
1月前
|
存储 编译器 C语言
C语言函数的定义与函数的声明的区别
C语言中,函数的定义包含函数的实现,即具体执行的代码块;而函数的声明仅描述函数的名称、返回类型和参数列表,用于告知编译器函数的存在,但不包含实现细节。声明通常放在头文件中,定义则在源文件中。
|
1月前
|
C语言
c语言回顾-函数递归(上)
c语言回顾-函数递归(上)
32 2
|
1月前
|
Java 编译器 C语言
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
22 3