在c語言中指標就是可以變化的位址嗎?

時間 2021-05-31 09:10:14

1樓:

僅僅說對了一部分。

1、的確,在絕大多數場合,指標是「變化的位址」。

我們開拓一下思路:

「變化的位址」的反義——是「不變化的位址」,對嗎? 沿這個思路,想一想,指標是否可能是「不變化的位址」?

int * const p;

指標p能變化嗎?

2樓:

我認為,不一定;

指標不僅負責儲存乙個位址,還負責儲存,它能管轄的記憶體範圍;例如:

int*Ar=

(int*)

calloc(16

,sizeof

(int));

//...

free(Ar

);這裡的 Ar,不僅儲存了一段連續的記憶體的首位址,還儲存了這段記憶體的長度;

否則,後面的 free() 函式,怎麼知道,該釋放多大的記憶體呢?

而且,有些指標,是不可以變化的,例如:

const

char

*Str=;

這裡的 Str,就儲存了乙個,不可以變化的位址,後面的字串,就從這個位置開始儲存,直到遇到第乙個 '\0' 字元為止;

注意,我們可以,對之前的 Ar 重新賦值,但不能對這裡的 Str 賦值,即使賦相同的值也不行;

free(Ar

);Ar=(

int*

)calloc(32

,sizeof

(int));

// 編譯到這,暫時沒問題;

Str=

Str;

// 編譯到這裡,會出錯的;

3樓:巐歌

指標就是乙個儲存位址值的變數。

既然是儲存的是位址值,那麼用其位址值就能檢索到記憶體對應位址的內容。

既然是變數,其值可變,也就是裡面儲存的位址值可變,用來指向不同的位址。

既然是變數,那麼本身就要占用記憶體位置,也就是本身位置也有位址。

在 C 語言中指標的歷史是怎樣的?

Crazyjin 型別 變數和變數的值本來就是三個概念 一直都是三個概念。int是型別,int a 申明了乙個int型別的變數a。pointer是型別,pointer variable是pointer型別的變數。只不過這裡pointer和pointer variable沒有指明具體型別。這裡舉個具體...

C 語言中指標陣列和陣列指標 函式指標 指向函式的指標等等該怎麼理解?

ga6840 direct declarator IDENTIFIER declarator direct declarator direct declarator assignment expr direct declarator declarator direct declarator poin...

c語言中指標指向的非指標變數不能使用 或 嗎

大灰灰老師 學術概念上不太正確 關於 unary 的定義 但實際上是對的解釋 C語言中,所有 unary operator 單目運算子,優先順序都是有著 left to right associativity 的比 right to left 的高,即放在被操作量右邊的先算。例如 p 先算右邊的 s...