解引用運算符

解引用運算符(dereference operator)或稱間址運算符(indirection operator)。[1]C語言程式語言家族中常表示為"*" (一個星號),為單元運算符,作用於1個指針變量,返回該指針地址的等效左值。這被稱為指針的解引用。例如:

 int x;
 int *p;  // * is used in the declaration:
          // p is a pointer to an integer, since (after dereferencing),
          // *p is an integer
 x = 0;
 // now x == 0
 p = &x;  // & takes the address of x
 // now *p == 0, since p == &x and therefore *p == x
 *p = 1;  // equivalent to x = 1, since p == &x
 // now *p == 1 and x == 1

在C語言中,&是解引用運算符*的逆運算。因此*&s等價於s。例如:

 p = &s; // the address of s has been assigned to p; p == &s;
 // *p is equivalent to s

結構s的成員a的值可表示為s.a。若指針p指向s (即p == &s), s.a等價於(*p).a,也可用結構解引用運算符作為語法糖縮寫表示為p->a

 p = &s; // the address of s has been assigned to p; p == &s;
 // s.a is equivalent to (*p).a
 // s.a is equivalent to p->a
 // (*p).a is equivalent to p->a

Unix的外殼腳本以及一些工具軟件如Makefile中,美元符"$"為解引用運算符,用於把變量名字轉譯為其內容。

參見

編輯

參考文獻

編輯
  1. ^ Pointer related operators (C# reference), source:MSDN. [2022-03-04]. (原始內容存檔於2022-07-09).