[英]Assigning values to pointers?
在丹尼斯·里奇(Dennis Ritchie)中,我發現了這一點,
struct rect r , *rp = r;
那么這四個表達式是等效的:
r.pt1.x
rp->pt1.x
(r.pt1).x
(rp->pt1).x
因為操作員從左到右關聯。
它不是struct rect * rp =&r嗎?
是的,它絕對應該,因為rp
是指向struct rect
的指針,而r
是struct rect
類型。 也許是本書中的錯字?
絕對-地址運算符是必需的, 否則會出現編譯時錯誤 :
incompatible types when initializing type ‘struct rect *’ using type ‘struct rect’
這是本書中的錯字,在以后的版本中已得到糾正。
有問題的書是Kernighan和Ritchie撰寫的“ C編程語言”第二版 ,通常稱為“ K&R2”。 由於他只是兩位作者之一,因此通常不稱為“ Ritchie”。 (有些人可能會對知道它現在可以作為Kindle電子書感興趣)。
這本書的勘誤表說:
后來在1989年10月的印刷中,對第131頁(§6.2)進行了較小的更改,以在第208頁(§A.17)的最后一個示例(
struct rect r, *rp = &r;
)上添加&
,以更改“等於在邏輯OR的描述中將“”表示為“不相等”,並在第254頁(§B.8)中闡明,對於自動變量,只有聲明為volatile
變量在setjmp
/longjmp
序列后才恢復為其最新值。
(是的,短語“自動變量”應為“自動變量”。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.