概述
最近学习oc,把之前学得很水的c语言重新过了一遍,打算整理一些基础的东西,方便以后回顾
1.c程序编译的过程
/*
1.预处理(Preprocessing):对源程序进行“替代”工作,生成一个没有宏定义、没有条件编译指令、没有特殊
符号的输出文件
过程主要包括以下内容:
1.将所有的#define删除,并且展开所有的宏定义(字符替换)
2.处理所有的条件预编译指令,比如#if #ifdef #elif #else #endif等
3.处理#include 预编译指令,将被包含的文件插入到该预编译指令的位置
4.删除所有注释
5.添加行号和文件标识,以便编译时产生调试用的行号及编译错误警告行号
6.保留所有的#pragma编译器指令,因为编译器需要使用它们
2.编译(Compilation):将预处理完的文件进行一系列的词法分析,语法分析,语义分析及优化后生成相应的汇编代码
3.汇编(Assembly):将编译过程的汇编代码转换成机器码
4.链接(Linking):将多个目标文件以及所需的库文件链接成最终的可执行文件
*/
2.头文件的导入
/*
头文件:包含功能函数、数据接口声明的载体文件,用于保存程序的声明(declaration),不占用内存空间
【定义文件:用于保存程序的实现 (implementation)】
什么时候需要导入:需要使用到外部提供的函数或者变量时
导入的方式:
< >:用于导入系统自带的库,编译器会先到保存系统标准头文件的位置查找头文件,如果没有找到,再到当前目录中查找
" ":用于导入用户自定义的头文件
编译器会先在当前文件中查找头文件,如果没有找到,再去系统库中查找
(因此使用" "导入系统提供的头文件时会影响编译速度)
*/
3.main函数相关
/*
main函数是c程序的入口函数,即c程序的执行总是从main函数开始。
c语言发展到今天,对main函数有多种不同的写法,但是在最新的 C99 标准中,只有两种定义方式是正确的
*/
1.int main(void){
//无参数形式
return 0;
}
2.int main(int argc, char *argv[]){
//含参数形式
return 0;
}
/*
其中,int 表明了main函数的返回类型,用于记录程序的执行状态
(return 0:将0返回给操作系统,表示程序正常退出,并结束函数)
void: 表示没有给函数传递参数
argc(argument count): 表示执行程序时,编译器传递过来的参数个数
argv(argument value):指向字符串的指针数组,以字符串形式保存与argc对应的参数
一般在集成开发环境(IDE环境)下,程序总是从main函数开始,不用向它传递参数,因此通常argc = 1,argv = 程序路径
*/
4.关键字与保留字
/*
关键字 ( keyword):word or identifier that has a particular meaning to the
programming language;
保留字 ( reserved word):a reserved word is a word that cannot be used as an
identifier, and a reserved word may have no meaning.
关键字是编程语言规定的有特定含义的词或标识符,而保留字是不能定义为标识符的词,为
系统保留,有些保留字可能并没有什么意义。
(例如java中的goto保留字,它并不是关键字,没有什么具体含义,仅为系统保留而已。)
但是在c语言中是不区分保留字与关键字的,所有保留字都为关键字.
*/
//根据关键字的作用,可以分为四类
//1.数据类型关键字
char
//声明字符型变量或函数
double
//声明双精度变量或函数
enum
//声明枚举类型
float
//声明浮点型变量或函数
int
//声明整型变量或函数
long
//声明长整型变量或函数
short
//声明短整型变量或函数
signed
//声明有符号类型变量或函数
struct{}
//声明结构体变量或函数
union{}
//声明共用体数据类型
unsigned
//声明无符号类型变量或函数
void
//声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)
//2.控制语句关键字
for
//一种循环语句(循环语句关键词)
do
//循环语句的循环体(循环语句关键词)
while
//循环语句的循环条件(循环语句关键词)
break
//跳出当前循环(循环语句关键词)
continue
//结束当前循环,开始下一轮循环(循环语句关键词)
if
//条件语句分支(条件语句关键词)
else
//条件语句否定分支(条件语句关键词)
goto
//无条件跳转语句(条件语句关键词)
switch
//用于开关语句(开关语句)
case
//开关语句分支(开关语句)
default
//开关语句中的“其他”分支(开关语句)
return
//子程序返回语句(返回语句)
//3.存储类型关键字
auto
//声明自动变量(一般不使用)
extern
//声明变量是在其他文件正声明(也可以看做是引用变量)
register
//声明寄存器变量
static
//声明静态变量
//4.其他关键字
const
//声明常类型
sizeof
//用于计算特定类型或特定类型变量的数据类型长度
typedef
//常规变量类型定义,数据类型取别名,指针类型定义,函数地址说明,函数声明,函数指针定义等
volatile
//说明变量在程序执行中可被隐含地改变
最后
以上就是辛勤小丸子为你收集整理的【笔记】c语言学习笔记part1的全部内容,希望文章能够帮你解决【笔记】c语言学习笔记part1所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复