C語言指向函數(shù)的指針承載的信息比較復雜,組織起來要素要寫全。根據(jù)指向函數(shù)的指針的書寫語法,下面的代碼就是一個返回函數(shù)指針的函數(shù):int (*f(void))(int){//f是函數(shù),沒有參數(shù),返回指向一個函數(shù)的指針;這個被指向的函數(shù)有一個int型形參,且返回一個int值 return fun;//fun是個函數(shù)名,必須具備一個int形參、返回int值的要求}以下代碼可以驗證上述函數(shù)的正確性:pre t="code" l="cpp"http://#include "stdafx.h"http://If the vc++6.0, with this line.

目前創(chuàng)新互聯(lián)已為上千的企業(yè)提供了網(wǎng)站建設、域名、虛擬主機、成都網(wǎng)站托管、企業(yè)網(wǎng)站設計、泰興網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
#include "stdio.h"
int fun(int n){
printf("abcdef\n");
return n;
}
int (*f(void))(int){
return fun;
}
int main(void){
printf("%d\n",f()(100));//調用函數(shù)f,通過f返回的指針用100調用函數(shù)fun
return 0;
}輸出是:abcdef100
個人見解,希望有點用:
1).區(qū)別 *(p+(year-2000))和 *(p+month)中的兩個p的涵義,它們是不相關的:
第一個p是函數(shù)中的形參,同時是行指針,指向一個包含12個元素的一維數(shù)組;
第二個p是主函數(shù)中的指針變量。
2).假設前面的信息都已輸入,你要查找2003年各個月份的情況。輸入2003后,
調用函數(shù)search(rain,year)后, p+(year-2000)即為p+3,是數(shù)組rain第3行的首地址,*(p+3)就是數(shù)組rain第3行第0列的首地址了。
此時,返回值為rain[3][0].在主函數(shù)中p=rain[3][0],于是p+month=rain[3][month],//
*(p+month)=rain[3][month].//即為2003年各月份情況。
#includestdio.h
#includestdlib.h
int main()
{
float score[][4]={60,70,80,90, 56,89,67,88, 34,78,90,66}; //把*去掉
float *search (float (*pointer)[4],int n);
float *p;
int i,m;
printf("enter the number of student:");
scanf("%d",m);
printf("The scores of No.%d are:\n",m);
p=search(score,m);
for(i=0;i4;i++)
printf("%5.2f\t",*(p+i));
system("pause");
}
float *search(float (*pointer)[4],int n)
{
float *pt;
pt=*(pointer+n);
return (pt); //括號是中文下的,改英文下的
}
這種方式叫做“用指針函數(shù)*creat()的返回值來傳遞動態(tài)內存”,這是一個C語法
首先你要注意,子函數(shù)*creat()用了malloc動態(tài)申請內存,而return返回的是指針變量所指向的地址,而不是指針!相當于將你所申請的動態(tài)內存返回給主函數(shù)
int
*fun(void)//這里是指針函數(shù)
{
int
*p
=
(int
*)
malloc
(int);//動態(tài)申請內存//p在這里指向了一塊合法內存的地址
return
p;
}
void
main(void)
{
int
*q
=
NULL;
q
=
fun();//fun()返回指針p所指向的地址,(指針p是在棧上創(chuàng)建的,所以*fun()函數(shù)運行完,指針所分配的內存被系統(tǒng)自動釋放)這時q指向p,得到了malloc所申請到的內存
free(q);//釋放動態(tài)內存
}
當前標題:c語言返回指針值得函數(shù),c語言 函數(shù)返回指針
轉載注明:http://chinadenli.net/article4/dseghie.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、、網(wǎng)站排名、標簽優(yōu)化、虛擬主機、網(wǎng)站導航
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)