我在Dennis Ritchie身上找到了这个,
struct rect r , *rp = r;
那么这四个表达式是等价的:
r.pt1.x
rp->pt1.x
(r.pt1).x
(rp->pt1).x
因为运算符从左到右关联。
应该是使用 struct rect *rp = &r
吗?
我在Dennis Ritchie身上找到了这个,
struct rect r , *rp = r;
那么这四个表达式是等价的:
r.pt1.x
rp->pt1.x
(r.pt1).x
(rp->pt1).x
因为运算符从左到右关联。
应该是使用 struct rect *rp = &r
吗?
incompatible types when initializing type ‘struct rect *’ using type ‘struct rect’
是的,它肯定应该这样做,因为rp
是指向struct rect
的指针,而r
的类型是struct rect
。也许书中有错别字?
这是书中的一个笔误,已在后来的版本中进行了更正。
所涉及的书籍是Kernighan和Ritchie的{{link1:“C程序设计语言”,第2版}},通常称为“K&R2”。它通常不被称为“Ritchie”,因为他只是两位作者之一。(你们中的一些人可能会感兴趣知道,它现在可以作为Kindle电子书使用。)
该书的勘误列表如下:
1989年10月的后一次印刷对第131页(§6.2)进行了微小更改,将最后一个示例(struct rect r, *rp = &r;
)添加了&
;在第208页(§A.17)中,将逻辑OR的描述中的“相等”更改为“不相等”;在第254页(§B.8)中澄清,对于自动变量,只有声明为volatile
的变量才会在setjmp
/longjmp
序列之后恢复到它们的最新值。(是的,“automatics variables”应该是“automatic variables”。)