初學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 ...