前置知识:IDE
何为IDE
即集成开发环境(IDE,Integrated Development Environment ),包含编辑器、编译器、调试器、图形界面等工具。因一般都包含项目管理,代码高亮,自动补全,代码调试等功能,故使用IDE开发相比直接在文本编辑器中写代码,在终端中使用命令调试、编译能极大提升开发效率。
C/C++开发常见IDE
Dev-C++、CLion、VS、VSCode
IDE推荐
新人推荐Dev-C++上手,非常轻量化,且安装完不用进行过多配置即可使用,调试功能也能满足日常学习需求;
熟练后推荐尝试Clion/VSCode,两者安装均相对繁琐但功能强大,且可通过安装插件进一步扩展其功能;
VS相对更适合专业的C/C++开发人员使用,对于学习来说太过臃肿
C语言简介
程序基本结构
常有头文件
头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明,而定义文件用于保存程序的实现。
通俗来讲:倘若将程序比作汽车,C语言比作原料,则头文件相当于一个文件夹,文件夹中放的是汽车各部件的图纸。
补充:按照这种类比,则定义文件可以理解为代工厂,工厂将原材料按照图纸加工成部件,编程的工作即是把各部件拼成一辆完整的汽车。
常含有宏定义
宏(Macro),是一种批量处理的称谓。计算机科学里的宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定的文本模式。
通俗来讲:即是将一段字符串替换成另一串字符串。例如倘若程序中有#define TEMP 20
,则程序中所有的TEMP
单词均会被替换成20
。
补充:需注意的是,宏定义在替换文本是会无视前后文内容。若定义了#define TEMP 20
,程序中又写了TEMPLE = "寺庙";
,则编译前会被转义为20LE = "寺庙";
。
必含有主函数
必须包含main()
函数为C语言的语法规则,必须遵循。
基本的程序结构
Hello World!
下面是一个最简单的C语言程序:
#include <stdio.h>//引用头文件,内部包含输入输出函数
/**
*主函数
*/
int main(){
printf("hello world");
return 0;//返回值,结束函数
}
该代码含有一个头文件和一个主函数以及两种注释。
头文件
关于头文件是什么已经做过介绍,使用方式即#include <头文件名>
或#include ”头文件名“
。两种格式的区别在于前者先在标准库中查找,查找不到在path中查找。后者为文件路径,若直接是文件名则在项目根目录下查找。
补充:path为系统环境变量中的属性,其值为一个或多个目录。
注释
注释就是对代码的解释和说明,其目的是让人们能够更加轻松地了解代码。注释是编写程序时,写程序的人给一个语句、程序段、函数等的解释或提示,能提高程序代码的可读性。
注释只是为了提高可读性,不会被计算机编译。
注释有两种格式://注释内容
和/*注释内容*/
。前者的生效范围是//
及其之后的一整行内容,换行后即失效;后者的生效范围是/*
与*/
及其之间的内容,从以上程序可以看出后者是可以跨行使用的。
补充:因注释不会被编译,以下注释也是可正常使用的:#inc/*注释内容*/lude <stdio.h>
。但注释的目的是提高代码的可读性,这么做显然与该目的相悖,所以正常情况下不会出现这种用法。
主函数
即图中的int main(){代码内容}
,其中:
int
称为数据类型(后续将会专门介绍),标识着该函数的运行结果是什么类型的数据;
main
是函数名,即函数的名字,主函数的函数名固定为main
,其他函数名称在符合规范的前提下可以任意选择;
()
内的内容成为形式参数列表,可留空,但主函数的形式参数列表留空的话会默认填充String args[]
,至于该填充的意义是什么以后将做详细介绍;
{}
内包含代码后的整体成为代码块,紧跟在形式参数列表后成为函数体,即函数具体执行的功能描述;
printf("hello world");
与 return 0;
称为语句,语句为C语言的基本构建块,一条语句相当于一条完整的计算机指令,每个语句以分号结尾。
补充:参考函数的概念可知,printf("hello world")
就是一个函数
代码规范
规范并非规则,非强制要求,但按照规范书写代码可以提升代码的可读性,方便与人合作开发与后续维护,故代码规范非常需要重视。
1、善用回车保留空行,一个模块一段,模块与模块之间空行分隔;
2、变量、函数命名规范,避免无意义命名、拼音命名,建议驼峰命名或首字母大写命名;
3.1、善用tab键控制缩进而非用空格键控制;
3.2、倘若有跨平台开发的需求,则需注意要用空格控制缩进而非tab。不同平台对\t
的不同定义可能会导致用tab键控制缩进的代码排版爆炸。
4、随手写注释。
……
C语言中其他基本元素
变量
由于变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此它们十分有用。变量可以保存程序运行时用户输入的数据、特定运算的结果以及要在窗体上显示的一段数据等。简而言之,变量是用于跟踪几乎所有类型信息的简单工具。
变量正如数学公式里的x,ζ,λ等字符,用来书写时替代特定的数据,方便开发。
其定义方法为数据类型 变量名;
,如int x;
。数据类型后面将作介绍
根据定义位置不同,C语言中存在全局变量(定义于函数外部)与局部变量(定义于某函数内部)。前者可在其定义的位置后的任意位置使用,后者仅能在他所在的函数体内、其定义位置后使用。
但需注意的是,并不是将所有变量都在最开头定义成全局变量就能解决一切问题。编程时应尽力避免全局变量的使用,原因在以后介绍C语言的内存分配机制时会解释。
数据类型
基本数据类型
整型int
,浮点型float
/double
,布尔型bool
,字符型char
等
注:其中布尔型为C99及之后版本加入,且需引入头文件stdbool.h
其他数据类型
如字符串型string
,结构体型struct 结构体名称
,枚举型enum
等
修饰符
const
(不可修改)、unsigned
(无符号,即非负)等
保留字
保留字即C语言中本身具有意义的单词等,无法作为变量名、函数名等使用,如int
就是一个保留字。
类型 | 存储大小 | 值范围 |
---|---|---|
char | 1 字节 | -128 到 127 或 0 到 255 |
unsigned char | 1 字节 | 0 到 255 |
signed char | 1 字节 | -128 到 127 |
int | 2 或 4 字节 | -32,768 到 32,767 (32位)或 -2,147,483,648 到 2,147,483,647 (64位) |
unsigned int | 2 或 4 字节 | 0 到 65,535 (32位)或 0 到 4,294,967,295 (64位) |
short | 2 字节 | -32,768 到 32,767 |
unsigned short | 2 字节 | 0 到 65,535 |
long | 4 字节 | -2,147,483,648 到 2,147,483,647 |
unsigned long | 4 字节 | 0 到 4,294,967,295 |
float | 4 字节 | 1.2E-38 到 3.4E+38 |
double | 8 字节 | 2.3E-308 到 1.7E+308 |
long double | 16 字节 | 3.4E-4932 到 1.1E+4932 |