C語言中的典型問題(3)

2021-08-15 03:38:04 字數 971 閱讀 2910

指標中的問題

(1)指標是什麼?起什麼作用?

指標是變數的一種,就像其他的變數一樣,只不過其他的變數裡面儲存的是乙個具體的東西,也不應該說是具體。應該說是直觀的東西,而指標變數就不一樣了,指標變數裡面儲存的是位址,在通過這個位址找到要找的資料,打個比方來說,指標就像是乙個郵箱,你先要輸入郵箱的位址才能找到郵箱裡的東西。

(2)函式呼叫的步驟

1.通過函式名找到函式的位址

2.給形參分配空間

3.傳值、傳位址

4.執行函式體

5.返回

6.釋放空間(最重要)

也許你會說這和指標沒什麼聯絡啊,這次我們的問題是指標的問題啊。對沒錯就是因為要談指標的問題所以我才把函式的呼叫過程重新拿回來講一下,下面我就說明一下原因。我們可以看到函式呼叫的第一步就是與位址有關,找到函式的位址,那麼也就是函式的呼叫可以用到指標。再看第二步形參,我們應該知道形參的值得改變並不能改變實參的值,那麼我們如何改變實參的值呢,這時候就要用到指標型別的形參了,因為形參所指向的內容值的改變可以改變實參。下面進入第三步我們可以看到不僅僅只能傳遞值,還可以傳位址,這時候就要定義乙個函式的指標。最後強調一下最後一步會釋放位址,所以不要穿區域性變數或者區域性變數的位址。

(3)指標的運算問題

要做指標的運算首先,個人認為也是最為重要的內容就是對指標變數的初始化賦值,因為如果你不對乙個指標變數初始化賦值的話,那麼這個指標很可能就變成野指標,野指標說好聽點是個錯誤,說難聽點就是乙個病毒,很有可能就導致你的程式,甚至是作業系統出現問題,而且這個問題含有潛伏期,不是一下就發現的,可以說是c語言界的一顆定時炸彈,威力巨大。

1.我們可以把乙個變數的位址賦予指向相同型別的資料型別的指標變數,如

int a , *pa ;

pa = &a//把a的位址給了pa。

2.把乙個指標變數的值賦予相同型別的另乙個指標變數。

int a , *pa = &a , *pb ; pb = pa;//把a的位址給了了pb。

(4)

C語言中的典型問題(2)

1.運算子優先順序 在乙個表示式中可能包含多個有不同運算子連線起來的 具有不同資料型別的資料物件 由於表示式有多種運算,不同的運算順序可能得出不同結果甚至出現錯誤運算錯誤,因為當表示式中含多種運算時,必須按一定順序進行結合,才能保證運算的合理性和結果的正確性 唯一性。優先順序從上到下依次遞減,最上面...

關於C語言中記憶體的3個問題

1.程式為什麼需要記憶體?電腦程式 結果,從巨集觀上理解,就是動作,而資料被動作加工,最終返回結果。程式是被放在記憶體中執行的,並且需要記憶體來儲存一些臨時變數,因此,對於程式來說,記憶體是程式的立足 生命之地。2.從硬體 邏輯角度看記憶體?從硬體角度上,記憶體是乙個硬體器件,由硬體系統提供,根據不...

關於C語言中記憶體的3個問題

1.程式為什麼需要記憶體?電腦程式 結果,從巨集觀上理解,就是動作,而資料被動作加工,最終返回結果。程式是被放在記憶體中執行的,並且需要記憶體來儲存一些臨時變數,因此,對於程式來說,記憶體是程式的立足 生命之地。2.從硬體 邏輯角度看記憶體?從硬體角度上,記憶體是乙個硬體器件,由硬體系統提供,根據不...