1.%p是位址的轉義字元
2.位址值是用十六進製制的無符號整數表示的,其字長一般與主機的字長相同。
3.int * pa:pa是乙個指標變數,它指向乙個整形變數(*是指標型別說明符)。
4.習慣上在定義指標變數的同時將其初始化為null,未被初始化意味著它的值是乙個隨機值,無法預知它指向**,會給系統帶來潛在危險。
5.間接定址時,*為間接定址運算子,用來訪問指標變數所指向的變數的值。
6.按值呼叫:不能在被調函式中改變其呼叫與劇中的實參值。
7.模擬按引用呼叫:運用指標為形參,通過向被調函式形參傳遞某個變數的位址值,可以在被調函式中改變主調函式中這個變數的值(需要返回多個值時,運用此方法)。
8.出口引數:值在函式呼叫結束後才被確定。
9.入口引數:在函式呼叫前,必須確定其值的形參。
10.函式的入口位址:儲存函式第一條指令的位址,不帶()的函式名。
11.函式指標:儲存函式在記憶體中的入口位址。
compare -> * -> () -> int
compare是乙個指標變數,該指標變數可以指向乙個有兩個整形形參,返回值為整型的函式。
compare -> () -> * -> int
compare是乙個函式,它有兩個整型形參,返回乙個整型指標。
void ascendingsort (int a,int n)
}void descendingsort (int a,int n)
}
由上述**可知,除了if語句中的條件不同,兩函式其他語句均相同。
新增乙個函式指標int (* compare)(int a,intb),得到以下**:
void selectionsort (int a,int n,int (* compare)(int a,int b))
}int ascending (int a,int b)
int descending (int a,int b)
呼叫selectionsort函式時,將公升降序函式名(入口位址)傳遞給函式指標形參變數。如下:
selectionsort (score,n,ascending) ;
selectionsort (score,n,descending) ;
第二段**中,if ((* compare)(a[j],a[k]))可以替換為if(compare(a[j],a[k])),它們意義相同,不過第一種表達方式更直觀。
C語言學習指標
恢復內容開始 一.運算子 scanf d i 裡的 獲得變數的位址,它的運算元必須是變數 int i printf x i 位址的 大小是否與int相同取決於編譯器 int i printf p i 不能對沒有位址的取位址 a b a a 二.指標初識 就是儲存位址的變數 int i int p i...
C語言學習筆記 指標
若觸過組合語言,那麼理解學習c語言中指標就很簡單了。指標,在彙編裡面的表現形式,無非就是定址,直接定址和間接定址。先來學習下,c語言中的4大類資料型別 基本型別 int,long,float,char 構造型別 陣列,結構體 struct,聯合體 union,列舉型別 enum 指標型別 int l...
C語言學習筆記 指標
c語言要玩的好,指標是核心,但是指標在學習的時候看教程往往感覺一看就明白,但是實際用的時候一用就錯,而且還不知道錯在哪。為了更加深刻的了解指標,將學習過程記錄下來,依次加深對指標的理解。先看看一段測試 void fun void int main void 定義乙個變數a,值為100,然後定義乙個一...