C語言中關於返回指標的函式和指向函式的指標

2021-07-02 17:26:04 字數 1237 閱讀 3818

初學c語言中的返回指標的函式和指向函式的指標時,往往容易分不清楚,下面我就來梳理一下:

也叫指標函式。

當乙個函式宣告其返回值為乙個指標時,實際上就是返回乙個位址給呼叫函式,以用於需要指標或位址的表示式中。

格式:

型別說明符 * 函式名(引數)

當然了,由於返回的是乙個位址,所以型別說明符一般都是int。

例如:

int *getdate();  

int *p(int,int);

函式返回的是乙個位址值,經常使用在返回陣列的某一元素位址上。

在下面的這個例子中,輸入某個大月的第幾周星期幾,輸出是幾號(假設1號為周一):

int * getdate(int wk,int dy);  

int main()

while(wk<1||wk>5||dy<1||dy>7);

printf("%d\n",*getdate(wk,dy));

}

int * getdate(int wk,int dy)

, ,

, ,

};

return &calendar[wk-1][dy-1];

}

也叫函式指標。

指向函式的指標包含了函式的位址,可以通過它來呼叫函式。

宣告格式如下:

型別說明符 (*函式名)(引數)

這裡的「型別說明符」是指函式返回值的型別。

例如:

void (*function)();

p=&function;  

p=function;

取位址運算子&不是必需的,因為單單乙個函式識別符號就標號表示了它的位址,如果是函式呼叫,還必須包含乙個圓括號括起來的參數列。

可以採用如下兩種方式來通過指標呼叫函式:

x=(*p)();  

x=p();

第二種格式看上去和函式呼叫無異。但是有些程式設計師傾向於使用第一種格式,因為它明確指出是通過指標而非函式名來呼叫函式的。

下面是個例子:

int max(int x, int y)

int main()

關於c語言中返回值和返回指標的問題。

int testa void char testb void int main 對於返回值的情況 testa與main函式同在棧區,testa結束時c 建立臨時變數,然後將返回值複製給該臨時 變數。printf the value of testa is d n testa 時輸出的是該臨時變數的值...

c語言函式的陣列返回和指標返回

函式內的陣列和指標都是屬於函式棧空間。如果把陣列或指標返回給外部指標,會發生什麼?1先看看第一種,返回陣列 2看看返回指標的情況 include stdio.h char get c int main int argc,char const ar 這個陣列了,系統或者任務會主動的修改裡面的資料,導致...

關於C語言中的指標

1 對於已定義的某個變數的讀取 通過該變數來訪問它的值 通過該變數的儲存位置讀取數值 指標 作業系統會將所有的記憶體單元進行編號。關於32位作業系統與64位作業系統支援的最大記憶體。計算機底層使用二進位制進行管理,所以32位作業系統支援2的32次方個編號,即4g的記憶體位址。int a 1 int ...