C专家编程第五天
来源:互联网 发布:网络情歌大全在线播放 编辑:程序博客网 时间:2024/06/05 02:22
typedef int x[10] 和 #define x int[10]的区别
1、可以对宏类型进行扩展,但是对typedef不能。
#define APP_INT int[10]
unsigned APP_INT i; //没有问题
2、在连续几个变量的声明中,用typedef定义的类型能够保证声明中所有的变量均为同一种类型,而用#define定义的类型无法保证。
typedef char * CHAR_PTR;
CHAR_PTR buf_out, buf_in; //没有问题,buf_out和buf_in是同一种类型
typedef char * STRING; //用STRING表示char*类型
typedef void(*ptr_to_func) (int); //用ptr_to_func表示一个类型,该类型是指针类型,该指针指向一个参数为int,返回为void的函数。
C语言声明的例子,从C语言声明的优先级规则 ->C语言声明解析图 ->伪代码 ->代码。
每一步都逐渐深入和清晰
编程方案:
Struct token { char type;
Char string[MAXTOKENLEN];
}
//保存第一个标识之前的所有标记
Struct token stack[MAXTOKENS];
//保存刚读入的那个标记
Struct token this;
伪码:
Classify_string (字符串分类)
查看当前的标记
通过this.type返回一个值
Gettoken(取标记)
把下一个标记读入this.string
如果是字母数字组合,调用classify_string
否则,它必是一个单字符标记,this.type=该标记,用一个NUL结束this.string
Read_to_first_identifier (读至第一个标识)
调用gettoken,并把标记压入到堆栈中,直到遇见第一个标识符
打印标识符
继续调用gettoken
解析程序:
Deal_with_function_args 处理函数参数
当读取越过右括号 “)”后,打印“函数返回”
Deal_with_arrays 处理函数数组
当你读取[size]后,将其打印并继续向右读取。
Deal_with_any_pointers 处理任何指针
从堆栈读取*时,打印
Deal_with_declarator 处理声明器
If this.type is‘[‘ deal_with_arrays
If this.type is‘(‘ deal_with_function_args
Deal_with_any_pointers
With 堆栈里还有东西
If 他是一个左括号 ‘(‘
将其弹出堆栈,并调用gettoken; 应该获得右括号‘(’
Deal_with_declarator
Else
将其弹出堆栈并打印它
- C专家编程第五天
- C专家编程第一天
- C专家编程第三天
- C语言第五天
- C第五天
- c/c++第五天
- 20130823C语言编程实践课第五天
- 【C专家编程】第8章-第11章
- 初学者:C++primer 第五天
- 学习C 的第五天
- 标准C语言第五天
- 【C专家编程】第5章 对链接的思考
- 【C专家编程】第6章 运行时数据结构
- 【C专家编程】第7章 对内存的思考
- 《C专家编程》勘误表
- c专家编程
- 【读书笔记】c专家编程
- C编程专家读后感
- 【博客之星】帮我投一票吧,谢谢
- Class.forName函数的理解和使用(修改)
- 【cocos2d-x IOS游戏开发-城市跑酷13】游戏玩法:友情提示:how to play?
- 僵尸进程的产生与避免
- Logiscope
- C专家编程第五天
- c++ 初始化列表
- V4l2接口使用--编程demo
- 17个使用Html5画布的实验
- 2014 IT 行业 工资大揭秘
- zend framework 中使用dbadapter操作数据库的几种方法(持续更新)
- 离开学校之前的某个晚上
- PC-lint
- URB数据结构