【笔记】c语言学习笔记part1

本文详细介绍了C语言的基础知识,包括程序编译流程、头文件的使用、main函数的不同形式及关键字与保留字的分类等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近学习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	  //说明变量在程序执行中可被隐含地改变

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值