我目前正在準備考試,正在重繪 我的指標知識。
我正在看這個小練習:
考慮以下 C 程式片段。對于每個程式,填充帶下劃線的空點,使變數 x 的最終值為 0。
int x;
int *p;
p = &_____;
*p = _____;
我假設第一個下劃線是 p = &x。我對第二個有點困惑。鑒于我們已經有了 int *p,在這種情況下 p = 和 *p = 之間有什么區別?
uj5u.com熱心網友回復:
int *p;
... 宣告p為型別變數int *(指向 的指標int)。鑒于此代碼總體上只有在出現在函式內部時才有效,因此該宣告不會為 賦值p。因此*p,盡管在語法上是正確的,但該運算式在該宣告之后(還)沒有意義。
隨后的
p =
為 (pointer) 賦值p。你的想法p = &x;似乎有道理。但這是關于指標p本身的值,而不是關于指向的物件的值p。
一旦p實際指向一個物件,就可以通過對它的賦值來訪問它所指向的物件的值,*p特別是,可以通過 將一個值分配給指向的物件*p = <value here>;。
也許讓您感到困惑的是,在任何情況下都不是*指標名稱的一部分。在第 2 行的宣告中,它是int *為變數宣告的型別 ( ) 的一部分p。在第 4 行的賦值中,它是一個應用于變數的一元運算子p。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/394532.html
上一篇:洗掉向量中的動態元素
