C語言基礎知識整理15指標 2

2021-09-10 21:40:28 字數 1867 閱讀 4878

如果在程式中定義乙個函式,在編譯時,編譯系統為函式**分配一段儲存空間,這段儲存空間的起始位址(又稱入口位址)稱為這個函式的指標。

若想呼叫乙個函式,除了可以通過函式名呼叫以外,還可以通過指向函式的指標變數呼叫。

(*指標變數)(函式引數);//(*指標變數)就是呼叫函式,其等價於函式名

//指標變數是指向函式的指標變數,只能指向函式入口處,不可能指向函式中的某條指令

定義:型別名(*指標變數名)(函式引數表列);//優於優先順序()不可省略,後一()象徵函式

//定義指向函式的指標變數,它只能指向在定義時指定型別的函式。

//若要用指標呼叫函式,必須先使指標變數指向該函式。

//在給函式指標變數賦值時,只需給出函式名而不必給出引數(只是賦位址)。

//用函式指標變數呼叫函式時,只需將(*p)代替函式名即可(p是指標變數名),在其之後的括號中根據需要寫上實參。

//對指向函式的指標變數不能進行算術運算。無意義

//用函式名呼叫函式,只能呼叫所指定的乙個函式,而通過指標變數呼叫函式比較靈活簡潔專業,可以根據不同情況先後呼叫不同的函式。

指向函式的指標變數的乙個重要用途是把函式的位址作為引數傳遞到其他函式。

這樣就可以在其他函式中呼叫此函式。當引數傳遞不同時,可以呼叫不同函式。

乙個函式可以返回乙個整型值、字元值、實型值等,也可以返回指標型的資料(即位址)

定義指標型函式(函式值是指標)

型別名 *函式名(參數列列);

乙個陣列,若其元素均為指標型別資料,稱為指標陣列。即指標陣列中每個元素都存放乙個位址,相當於乙個指標變數。

定義指標陣列

型別名*陣列名[陣列長度];//可用於存放多個字串首位址。

型別名 **指標變數名;//定義指向指標的指標

//二級間址理論上可以多重定址,但一般不會超過二級,易出錯難理解

指標陣列的乙個重要應用是作為main函式的形參。

main函式一般寫成       int main()或       int main(void)

//括號中為空或有「void」,表示main函式沒有引數,呼叫main函式時不必給出實參。

//這是一般程式常採用的形式。

實際上,在某些情況下,main函式可以有引數,如:

int main(int argc,char *ar**);

其中,argc和ar**就是main的形參,它們是程式的「命令列引數」

argc(argument count縮寫,意為引數個數),ar**(argument vector縮寫,意為引數向量),

它是乙個*char指標陣列,陣列中的每乙個元素(值為指標)指向命令列中的乙個字串

通常main函式和其他函式組成乙個檔案模組,有乙個檔名。編譯鏈結後執行exe檔案,作業系統呼叫main函式,由main呼叫其他函式,從而完成程式功能。

main函式是作業系統呼叫的,實參只能由作業系統給出。在操作命令狀態下,實參是和執行檔案的命令一起給出的。例如在dos,unix或linux等系統的操作命令狀態下,在命令列中包括了命令名和需要傳給main函式的引數。

命令列一般形式:命令名 引數1 引數2 。。。引數n//命令名與引數間用空格分隔

命令名是可執行檔名(檔名包含碟符、路徑)(此檔案包含main函式)

許多作業系統提供echo命令,作用是實現「引數回送」,即將echo後面的各引數(各字串)在同一行上輸出。實現「引數回送」的c程式(檔名為echo.c)如下:

#include

int main(int argc,char ar**)

若用unix系統的命令列輸入:$ ./echo computer and c language //echo是可執行的檔名

會在顯示屏上輸出:computer and c language

C語言基礎知識(六)(指標)

一 宣告和定義的區別 建立儲存空間的宣告稱為定義,不需要建立儲存空間的宣告稱為宣告。二 變數指標和指標變數 乙個變數的位址成為變數的指標。如果有乙個變數專門存放另一變數的位址,稱它為指標變數,也就是說指標變數的值是位址,例如 int pointer。指標變數的賦值 定義的時候初始化 int a 5 ...

C語言基礎知識回顧 4 指標

c語言基礎知識回顧 超適用於計算機二級 int p,s,k 20 s k p s 三者關係如下圖 int k 1,q,p q k s k 1 不合法賦值 p q 該關係如下圖 p null 等價於p 0 或p 0 表示給指標變數賦空值.1 通過指標來引用乙個儲存單元 通過 間接訪問運算子 e.g.i...

c語言基礎2指標

指標的詳解 指標的定是 int a b 1 a b 可以看出來,a這個指標變數存的是b的位址。可以變形為int a b d 表示訪問位置100,並取得裡面的值。乙個常見的錯誤,int a a 12 但是a究竟指向 呢,由於我們沒有對a進行初始化,所以我們沒有辦法 12這個值究竟存在 如果變數是靜態的...