c語言,指標,及其應用

2021-06-28 03:54:47 字數 2139 閱讀 4498

既然指標變數的值是乙個位址,那麼這個位址不僅可以是變數的位址,也可以是其它資料結構的位址。在乙個指標變數中存放乙個陣列或乙個函式的首位址有何意義呢?

因為陣列或函式都是連續存放的。通過訪問指標變數取得了陣列或函式的首位址,也就找到了該陣列或函式。這樣一來,凡是出現陣列,函式的地方都可以用乙個指標變數來表示,只要該指標變數中賦予陣列或函式的首位址即可。這樣做,將會使程式的概念十分清楚,程式本身也精練,高效。

前面介紹的main函式都是不帶引數的。因此main 後的括號都是空括號。

實際上,main函式可以帶引數,這個引數可以認為是main函式的形式引數。

c語言規定main函式的引數只能有兩個,習慣上這兩個引數寫為argc和argv。因此,main函式的函式頭可寫為:

main (argc,argv)

c語言還規定argc(第乙個形參)必須是整型變數,argv(第二個形參)必須是指向字串的指標陣列。加上形參說明後,main函式的函式頭應寫為:

main (int argc,char *argv)

由於main函式不能被其它函式呼叫,因此不可能在程式內部取得實際值。

那麼,在何處把實參值賦予main函式的形參呢?實際上,main函式的引數值是從作業系統命令列上獲得的。當我們要執行乙個可執行檔案時,在dos提示符下鍵入檔名,再輸入實際引數即可把這些實參傳送到main的形參中去。

dos提示符下命令列的一般形式為:

c:\>可執行檔名  引數  引數 ……; 

但是應該特別注意的是,main 的兩個形參和命令列中的引數在位置上不是一一對應的。

因為,main的形參只有二個,而命令列中的引數個數原則上未加限制。argc引數表示了命令列中引數的個數(注意:檔名本身也算乙個引數),argc的值是在輸入命令行時由系統按實際引數的個數自動賦予的。

例如有命令行為:

c:\>e24  basic  foxpro  fortran

由於檔名e24本身也算乙個引數,所以共有4個引數,因此argc取得的值為4。argv引數是字串指標陣列,其各元素值為命令列中各字串(引數均按字串處理)的首位址。 指標陣列的長度即為引數個數。陣列元素初值由系統自動賦予。其表示如圖所示:

【例10-38】

main

(int argc,

char

*argv)

本例是顯示命令列中輸入的引數。如果上例的可執行檔名為e24.exe,存放在a驅動器的盤內。因此輸入的命令行為:

c:\>a:e24 basic foxpro fortran

則執行結果為:

basic

foxpro

fortran

該行共有4個引數,執行main時,argc的初值即為4。argv的4個元素分為4個字串的首位址。執行while語句,每迴圈一次argv值減1,當argv等於1時停止迴圈,共迴圈三次,因此共可輸出三個引數。在printf函式中,由於列印項*++argv是先加1再列印, 故第一次列印的是argv[1]所指的字串basic。第

二、三次迴圈分別列印後二個字串。而引數e24是檔名,不必輸出。

指標的資料型別:

定義含義

int i;

定義整型變數i

int *p

p為指向整型資料的指標變數

int a[n];

定義整型陣列a,它有n個元素

int *p[n];

定義指標陣列p,它由n個指向整型資料的指標元素組成

int (*p)[n];

p為指向含n個元素的一維陣列的指標變數

int f();

f為帶回整型函式值的函式

int *p();

p為帶回乙個指標的函式,該指標指向整型資料

int (*p)();

p為指向函式的指標,該函式返回乙個整型值

int **p;

p是乙個指標變數,它指向乙個指向整型資料的指標變數

C語言 函式指標及其應用

基礎知識 函式指標 function pointer 就是指向函式的指標變數。定義函式指標的基本格式為 資料型別 指標變數名 形參列表 資料型別表示這個指標變數所指向的函式的返回值的型別,形參列表表示這個指標變數所指向的函式所具有的形參列表。例如,若有函式原型為 int fun int a,int ...

C語言 指標及其運算

任務 include include int main int a 3,b 5,p1,p2,p p1 a p2 b if a 執 況 知識總結 回顧 變數三要素 變數名,變數值,儲存空間 不同的變數名有不同的儲存空間 指標變數表示 資料型別 p 記憶體單元的訪問和訪問 直接訪問和間接訪問 兩個符號的...

指標及其應用(一)

2 指標的長度 指標的長度時固定的,任何型別的指標都是4 位元組。原因 所有的指標都用來儲存位址,而在作業系統中,位址的長度是固定的,因為位址的長度是由作業系統的位數決定的。32 位的作業系統中是 4位元組,64位的作業系統中 是 8位元組。3 指標的運算子 和 運算子 通常稱為間接引用運算子,它返...