回覆列表
  • 1 # 你永遠追不上的巨人

    一樣的。由於你使用了typedef,所以 struct Name 可以簡單地寫為 NAME,例如你例子中的 struct Name *p,可以簡寫為 NAME *p。 如果加上 const 修飾,就有區別了(下面我都用 NAME 代替 struct Name)。兩者都加上 const,分別是:

    1、const NAME *p,意為變數指標 p 指向的是常量 NAME。

    2、const PNAME p,意為常量指標 p 指向的是變數 NAME。要理解兩者的區別可能不是很容易,可以這樣來看:const 與“型別”交換位置後,const是否跑到了指標(*)的右邊,如果沒有跑到右邊,那麼“指標是變數,指向的資料是常量”,跑到了右邊就是“指標是常量,指向的資料是變數”。以例項分析:const NAME *p,const 和型別交換位置,變為 NAME const *p,const 仍然在 * 的左邊,所以指標 p 本身是變數,而指向的 NAME 是常量。再分析 const PNAME p,這裡要明白一點:PNAME 雖然是 NAME*,但typedef 已經將 NAME和*綁定了,就是說 PNAME 不能再拆開為 NAME *,於是交換後變為 PNAME const p,const 已經跑到了 * (原來的)的右邊,所以指標 p 本身就是常量,指向的 NAME 是變數,這種定義還須注意一點:由於 p 是常量,所以在定義時就要初始化。

  • 中秋節和大豐收的關聯?
  • 你會不會去看前任的QQ空間、朋友圈和微博?