C語言指標學習六

2021-07-02 04:06:53 字數 979 閱讀 8688

下面通過交換兩個數的值的例子比較,程式**在最下面,加深對指標變數的理解

swap1函式

①main主函式a的值3,b的值5傳遞到是swap1,

swap1的區域性變數p, q雖然在做值3和5 的交換,

可是一旦交換完畢,區域性變數p和q所占用的記憶體空間會釋放掉。

②主函式main中的a, b仍然沒有被改變。

swap2函式

①main函式中a和b的位址分別傳遞給p, q.

swap2做的是兩個位址值的傳遞,被新賦給的兩個位址值交換,

但是無法將main程式中a的位址更換為b的位址,

b的位址更換為a的位址。任何程式都無法做到

②所以a的值沒有變,b的值沒有變

swap3函式

①main函式中a和b的位址分別傳遞給p, q.

此時*p將完全相當於a, 因為p的位址是a的記憶體位址,

*在這裡是&的你運算,這樣*q就完全等同與b

在swap3中交換*p和*q就完全等同於交換main函式中的a和b.

①一旦乙個指標變數被賦予了某個普通變數的記憶體位址,指標變數就指向了這個普通變數

②這個指標變數指向了這個普通變數,則修改指標變數,不影響該普通變數

同樣這個時候修改普通變數也不影響指標變數。

③*指標變數完全等同於該普通變數。

④另外需要說明的是變數的本質就是記憶體

⑤普通變數(相對與指標變數而言,即非指標變數)一旦被定義,其記憶體位址無法被改變,如main函式中的a, b

#include 

void swap1(int p, int

q)void swap2(int * p, int * q)

void swap3(int * p, int * q)

int main()

學習C語言指標

先看個程式,是華為2005年招聘筆試題之一 include main int p,q p a q a 2 printf a p q d n q d n p d n q p d n a q p q,p,q p getch 執行結果 a q p 3 q 42 p 46 q p 2 6.3 指標的運算 指...

c語言 指標學習

最近重翻了c語言程式設計這本書,有了一些新的感觸,這本書從資料型別 運算子和表示式 迴圈和選擇結構 輸入輸出 陣列 指標 字串 函式 構造體和檔案操作等方面來深入淺出的介紹c語言。當然最令人印象深刻的是指標。指標是存放著變數的位址的變數的資料型別,換言之,指標變數儲存的是變數的位址值,由於指標可以直...

C語言指標學習

一 明確幾個符號 1 取位址符,取值符 1 char a 別用cha a null,容易引起歧義 例如char a b 其實是定義指標a,和char型變數b。定義多個指標用 char a null,b null 2 定義指標時初始化 因為指標a到底指向 我們不知道。隨便改變這個位址的值,可能導致一些...