语法分析总

本文详细解析了C语言中的翻译单元概念,每个翻译单元由外部声明组成,包括声明和函数定义。讨论了类型区分符、声明符、函数定义、指针、数组和结构体的声明方式,并通过实例解释了声明符后缀和函数体的结构。

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

[ ]表示出现一次或0次,{}表示出现0次或多次,()表示是一个整体

程序a

int x=1,y=3;

int fun(int a)

{

         return 2*a;

}

int main()

{

        int  a=3;

        printf("%d\n",fun(a));

}


程序a 就是个翻译单元

一个完整的C文件是一个翻译单元

翻译单元由若干个外部声明和一个文件结束符组成符

外部声明可以是声明也可以是函数定义

程序a中有三个外部声明

一个是声明  int x=....

两个是 函数定义

函数定义由 类型区分符 声明符 函数体组成

类型区分符 就是 int void char short 或者自己定义的结构体类型

自己定义的结构体 是

struct 名称    或者是

struct 名称

{

       类型区分符 声明符,声明符......;

       ......

}

声明符 是

[*] 标识符 [声明符后缀]

声明符出现*时一般是与前面的类型区分符搭配表示 指针

如 int *p 定义了一个整型指针p

声明符后缀是

'[' 整型变量 ']'       带单引号的括号表字符    或

'('类型区分符 声明符,类型区分符 声明符,......')' 

定义函数的时候 int fun(int a)

fun(int a)是一个声明符

(int a)是声明符后缀

定义结构体的时候

struct node

{

       int a[4];

}

a[4]就是个声明符

[4]是声明符后缀

函数体是一个复合语句

{

      语句1

      语句2

      ......

}

声明

类型区分符;    或

类型区分符 声明符[=初始值],声明符[=初始值].......;

比如 int a=3,b=4,x;

就是个声明






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值