C与指针 第二章学习笔记

C与指针的第二章介绍了编译、链接和转义字符等概念。经查漏,要补缺的点如下:
1.在实现课后习题2.8.2时(用栈实现括号匹配算法),想用cout在屏幕上打印提示输入的语句,用了using namespace std,报错C2872: 不明确的符号is_empty()。
分析:
该函数是stack类的成员函数,用于判断栈是否为空,与std里定义的函数同名(),编译器不知道程序中要调用哪一个is_empty()函数,故报错。
解决方法(尽量不要写与库函数同名的函数):
注释掉using namespace std,避免重名,在cout前加std::。
微软对C2872错误的说明:
https://docs.microsoft.com/zh-cn/cpp/error-messages/compiler-errors-2/compiler-error-c2872?f1url=https://msdn.microsoft.com/query/dev15.query?appId=Dev15IDEF1&l=ZH-CN&k=k%28C2872%29&rd=true&view=vs-2017

2.若头文件被修改,则包含其的头文件a,包含头文件a的源文件c都要重新编译,其他不存在包含关系的头/源文件无需重新编译;

3.以两个括号打头,外加一个字符的(例如??(、??)等)是三字母词,表示一个字符;

4.\ddd(最多三位),该转义字符表示的字符就是给定八进制数所代表的字符,\0123代表’\012’和’\3’这两个字符;

5.\xddd则是十六进制数所代表的字符;

6.一段字符中若包含以/和*组成的注释,注释会被等效为一个空格;

7.括号匹配问题需用到栈这种数据结构,算法思路:
1)遇到左括号就push;
2)遇到右括号先看还有没有左括号,若没得,代表没有可匹配的左括号了,返回false;否则top、pop,判断栈顶元素与当前右括号是否匹配(这里可以辅助一个match变量,根据右括号来if或switch设置match,再比较match和栈顶元素是否相等)。

书中给出的警告:
1.字符串常量中的字符被错误的解释为三字母词;
2.编写得糟糕的注释可能会意外地终止语句;
3.注释的不适当结束。

书中给出的编程提示:
1.良好的程序风格和文档将使程序更容易阅读和维护。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值