簡體   English   中英

為指針分配值?

[英]Assigning values to pointers?

在丹尼斯·里奇(Dennis Ritchie)中,我發現了這一點,

struct rect r , *rp = r;

那么這四個表達式是等效的:

  1. r.pt1.x
  2. rp->pt1.x
  3. (r.pt1).x
  4. (rp->pt1).x

因為操作員從左到右關聯。
它不是struct rect * rp =&r嗎?

是的,它絕對應該,因為rp是指向struct rect的指針,而rstruct 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM