C语言入门到精通(一)
C语言入门前的常识
C语言的十一个小常识
- C语言程序的绝大部分内容应该记录在以 .c 作为扩展名的文件里,这种文件叫做C语言的源文件
- C语言里还可以使用以 .h 作为扩展名的文件,这种文件叫头文件
- C语言程序里可以直接使用数字和加减乘除四则运算符号(*代表乘法,/代表除法)
- C语言程序里每个计算步骤必须使用“;”结束,每个使用";"结束的计算步骤叫做一条语句,绝大多数语句应该写在大括号中间
- 大括号外面的内容一般情况下看不到大括号里面的内容,大括号可以用来代表函数(函数由一组语句构成,可以完成一个独立的功能)
- 每个函数都有自己的名字,不同函数的名字不能相同,所有C语言程序必须包含叫做main的函数,整个程序从这个函数的第一条语句开始执行,这个函数的最一条语句结束后整个程序结束这个函数叫做主函数。
- 函数结束后可以用一个数字表示它的处理结果,这个数字叫做函数的返回值,主函数应该有返回值,如果这个返回值是0,表示一切正常,如果返回值不是0,则表示处理过程出问题了.
- C语言里预先保留了几十个英文单词,他们都叫做关键字,关键字都有固定的使用方法,不能随便使用,所有关键字都是由小写英文字母构成的,return是一个关键字,它有两个用途:主要用途是结束函数的执行(任何时候一定会起这个作用),辅助用途是指定返回值(有条件的)
- 根据不同数字在某个方面的区别把数字分为几组,每组叫做一个数据类型,每个数据类型都有一个名字,整数类型是一种数据类型,它的名字是int这个数据类型里几乎包含所有不带小数点的数字
- 程序里的所有数字都必须有明确的数据类型程序里所有不带小数点的数字默认都是整数类型的
- 必须把返回值的类型名称写在函数名称前面
C语言的编写规范
1.一行里最多包含一条语句
2.同级别语句应该上下对齐
3.在合适的地方使用空格和空行
C语言的预处理指令
- C语言程序里通常需要包含预处理指令,预处理指令以#做开头,但不以“;”做结尾,标准C阶段遇到的预处理指令都可以把文件里的内容替换成其他内容,#include是一个预处理指令,它可以把一个头文件的内容包含到当前文件里,采用相对路径表示头文件位置,把相对路径包含在<>中间表示以系统中预先规定好的一组目录依次作为起点。把相对路径包含在" “中间表示先用当前文件所在目录作为起点,然后再把系统中预先规定好的目录依次作为起点,如果明确知道头文件在哪里通常使用” ",否则使用<>。
C语言的书写
- 程序里可以加入文字信息,这些信息必须加入到注释区域里,计算机会忽略注释区域里的所有内容单行注释以 // 做开头,一直到行尾,多行注释以 /* 做开头,以 */ 做结尾
- C语言程序里大量使用名称区分不同内容,这些名称叫做标识符,标识符最好采用英文单词,第一个字符可以是英文字母,下划线但不可以是数字,后面的字符可以是英文字母,下划线也可以是数字。大小写不同的标识符是不同的标识符(大小写敏感),关键字不可以作为标识符使用,标识符的长度没有限制,但是计算机只会截取前面一部分使用,标识符应该采用驼峰方式或下划线方式书写
- 编译器可以把写好的文件翻译成可以执行的程序,gcc是Linux系统里的C语言编译器,MinGW是Windows里的gcc
Linux系统里C语言程序开发的基本步骤
1.使用vi编写程序文件
2.使用gcc编译器把程序文件编译成可执行的程序(编译)
3.通过./a.out命令执行得到的结果文件
gcc编译器的工作步骤
1.处理所有预处理指令
2.把第一步的处理结果翻译成计算机认识的格式(编译)
3.把第二步的处理结果合并成最终的可执行程序(链接)
gcc选项介绍
-E 只处理预处理指令
-c 只处理预处理指令并且编译得到以 .o 作为扩展名的目标文件
-o 用来指定得到的结果文件名称
-std=c89/-std=c99 决定采用什么版本进行编译,如果没有使用这个选项相当于使用了c89选项
C语言中的函数
C语言里提供一组工具,它们叫做标准函数,每个标准函数用来解决一个常见问题,每个标准函数都有自己的名字,不同标准的函数名称不同,可以随时在程序里编写函数调用语句来使用标准函数
例如初学者最常用的printf()
- printf标准函数可以把程序里的数字显示在屏幕上,为了使用这个标准函数需要包含stdio.h头文件,可以在双引号里使用占位符把数字转移到双引号的后面
- 双引号后面的数字可以是编写程序的时候还不知道的数字,每种数据类型有对应的占位符,整数类型数字对应的占位符就是**%d**
- 可以在一条语句里使用多个占位符,这个时候就应该提供多个数字,数字的个数和占位符的个数一样
内存
程序里使用的所有数字都必须存放在内存里,计算机的内存由大量的字节构成,每个字节可以单独记录一个数字,每个字节有一个编号,不同字节的编号不同
这个编号叫做字节的地址,所有字节的地址从0开始向正数方向递增,字节之间有前后顺序,地址小的字节在前面,地址大的字节在后面
可以把相邻的几个字节合并成一个整体用来记录一个数字
内存里用来记录一个数字的所有字节可以叫做一个存储区,我们的计算机里所有字节被分了组,每组里包含4个字节,一般情况下只有同组里的字节才可以被合并成存储区
一个存储区只能记录一种类型的数字(一个存储区里包含的字节个数不可以改变),存储区也有地址,它的地址就是它所包含的最前面字节的地址
变量
C语言程序里使用变量代表存储区,变量声明语句用来声明变量,只有声明过的变量才能使用,变量声明语句让计算机为程序分配一个存储区,可以在一条语句里声明多个同类型变量
变量有两种主要的使用方法,一种是向变量里放数字,另外一种是从变量里获得数字
赋值语句
- 赋值语句可以向变量里放一个数字
- 赋值语句里需要使用赋值操作符(=)
- 赋值操作符左边的内容必须可以代表存储区,这种内容叫左值(变量是最简单的左值)
- 赋值操作符右边的内容必须可以代表数字
- 赋值操作符可以把右边的数字记录到左边的存储区里
补充
- 存储区里一定有数字,数字的来源不一定明确,可以在声明变量的时候立刻对变量进行赋值,这叫做变量的初始化,C语言里所有变量都应该进行初始化
- 可以直接在程序里把变量当做数字使用,这样就可以获得变量里的数字
- C语言里同样的写法放在不同的地方效果可能完全不同(***)
- 存储区的地址也可以用来代表存储区
- 可以在变量名称前使用&符号得到存储区的地址,这个地址是计算机分配的,我们只能使用
- 可以使用%p作为占位符把地址数据显示在屏幕上
- 可以使用变量代表一个固定数字
- 变量可以用来代表一组数字(可以让变量在不同的时候代表不同的数字)