
C语言生成可执行文件过程
编译器gcc
1、预处理过程(头文件的包涵,去掉注释,宏展开)—#include 预处理过程不做语法检查 命令:gcc -E helloworld.c -o helloworld.i 2、 编译:编译过程做语法检查 生成汇编语言 命令:gcc -S helloworld.i -o helloworld.s 3、汇编:将汇编语言生成对应的二进制数据 命令:gcc -c helloworld.s -o helloworld.o 4、链接:添加对应操作系统可以执行的链接,生成可执行文件 命令:gcc helloworld.o -o helloworld
编译过程

连接过程
由链接器将可执行文件连接形成一个单一而完整的可执行程序。(同时会引入用到的库函数) 
整数

main函数


预编译

#include文件包含:(即java得import)

数据类型

常量

运算符

指针
只记:
- 指针就是地址
&变量名 就是指针(地址)*指针 就是指针指向的变量- 运算优先级:
=& > * > = (* 只优先于 = !!)
指针的声明
p 是指针,就是变量的地址
p 等于 &变量名 (&变量名 返p回的就是变量的地址)
int *p 返回p地址中存的变量值(指针指向的变量的值)
int *p=&变量名 =====> *(p=&变量名)
声明一个指针:
int *ip;
double *dp;
float *fp;
char *ch;

移动指针
int *p = 7;
int *p++ ===> int *(p++):就是指针移动到下一个对应的变量(并不是指针这个地址数+1)
比如int类型的指针:*p返回7,而 *p++是先将指针p移动2个字节指向下一个int变量的地址再*号返回7后面的int值(一个int类型变量是2个字节)
(*p)++:指将指针对应的变量值+1!!!
二级指针
指针p 指向一个变量值7 ===> 指针q 指向的变量 是指针p ===> 指针q就是一个二级指针
int x = 7;
因为指针(地址)p = &x;
所以 int *p = &x;
一个指针:q
让q指针指向p指针:*q = p;
则:int *(*q = p); =======> int **q = p;
所以:
x、*p、**q 返回 7 !
p、*q 是7的地址 !
三名主义

|