打印
[牛人杂谈]

495个C语言问题

[复制链接]
655|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wahahaheihei|  楼主 | 2017-5-28 09:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
495个C语言问题.pdf (1.37 MB)



沙发
wahahaheihei|  楼主 | 2017-5-28 09:42 | 只看该作者
臭名昭著的空指针到底是什么?
语言定义中说明, 每一种指针类型都有一个特殊值 —— “空指针” —— 它与
同类型的其它所有指针值都不相同, 它 “与任何对象或函数的指针值都不相等”。
也就是说, 取地址操作符 & 永远也不能得到空指针, 同样对 malloc() 的成功调用
也不会返回空指针, 如果失败, malloc() 的确返回空指针, 这是空指针的典型用法:
表示 “未分配” 或者 “尚未指向任何地方” 的指针。
空指针在概念上不同于未初始化的指针。 空指针可以确保不指向任何对象或
函数; 而未初始化指针则可能指向任何地方。 参见问题 1.10、 7.1 和 7.26。
如上文所述, 每种指针类型都有一个空指针, 而不同类型的空指针的内部表示
可能不尽相同。 尽管程序员不必知道内部值, 但编译器必须时刻明确需要那种空
指针, 以便在需要的时候加以区分 (参见问题 5.2、 5.5 和 5.6)

使用特权

评论回复
板凳
wahahaheihei|  楼主 | 2017-5-28 09:42 | 只看该作者
声明 struct x1 { . . . }; 和 typedef struct { . . . } x2; 有什么不同?
第一种形式声明了一个 “结构标签”; 第二种声明了一个 “类型定义”。 主要的区别是在后文中你需要用 “struct x1” 引用第一种, 而用 “x2” 引用第二种。 也就是说, 第二种声明更像一种抽象类新 —– 用户不必知道它是一个结构, 而在声明它的实例时也不需要使用 struct 关键字

使用特权

评论回复
地板
wahahaheihei|  楼主 | 2017-5-28 09:49 | 只看该作者
extern 在函数声明中是什么意思?
它可以用作一种格式上的提示表明函数的定义可能在另一个源文件中, 但在
extern int f();

int f();
之间并没有实质的区别

使用特权

评论回复
5
wahahaheihei|  楼主 | 2017-5-28 09:50 | 只看该作者
关键字 auto 到底有什么用途?
毫无用途; 它已经过时。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

200

主题

2982

帖子

12

粉丝