C语言有关内容复习

分析变量的类型

规则:从要分析的变量所在层开始分析,逐层分析即可,主要需要熟悉各种符合C语言语法的变量定义方式

一些常见的变量定义方式

int x;          //整型变量
int * px, y;    //整型指针变量和整型变量
int a[10];      //整型数组
int * b[10];    //整型指针数组
int (*c)[10];   //指向整型数组的指针,区分于上一行的整型指针数组
int (*f)(int t);//函数指针,对应函数返回值是int,参数是int t,对其赋值也必须用同类型的函数名对其赋值,例如后面foo的例子
int *g(int t);  //函数,该函数的返回值是int *,参数是t,区分于上一行的函数指针

int foo(int m){;}
f = foo;        //合法,因为类型完全相同

例一

int* (*b[10])[10]

b的类型是:b是一个指针数组[10],其中包含的指针指向指针数组,这个指针数组为int *[10]类型,即包含10个整型指针

例二

int (*(*(*pg())(int x))[20])(int *y);

pg的类型是:pg是一个函数,其参数为空,返回值是一个指针,指向一个函数,该函数的参数为int x,返回值是一个指针,指向一个指针数组[20],指针数组的元素指向一个函数,函数的参数是int *y,返回值是int

编译器工作流程

  1. 词法分析
  2. 语法分析
  3. 语义分析
  4. 中间代码生成
  5. 代码优化
  6. 代码生成