成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

c語(yǔ)言中字符指針函數(shù) c語(yǔ)言函數(shù)指針的用法

跪求C語(yǔ)言 用指針型函數(shù)編程求子字符串函數(shù)!!!! 分

嘿嘿,這是我自己寫(xiě)的一個(gè)函數(shù),希望對(duì)你有用

在蒼南等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需開(kāi)發(fā)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都全網(wǎng)營(yíng)銷,成都外貿(mào)網(wǎng)站建設(shè)公司,蒼南網(wǎng)站建設(shè)費(fèi)用合理。

//構(gòu)造截取子串函數(shù),start從零開(kāi)始.

char

*get_substr(char

*strDest,int

start,int

end)

{

if(startend)

return

NULL;

//如果開(kāi)始位置大于結(jié)束位置則返回

char

*subStr;

//字串指針

subStr=(char*)malloc((end-start+2)*sizeof(char));

int

i;

for(i=start;i=end;i++)

subStr[i-start]=strDest[i];

subStr[end-start+1]='\0';

return

subStr;

}

C語(yǔ)言中,指針型函數(shù)和函數(shù)型指針的區(qū)別

1 函數(shù)指針變量

在C語(yǔ)言中,一個(gè)函數(shù)總是占用一段連續(xù)的內(nèi)存區(qū),而函數(shù)名就是該函數(shù)所占內(nèi)存區(qū)的首地址。我們可以把函數(shù)的這個(gè)首地址(或稱入口地址)賦予一個(gè)指針變量,使該指針變量指向該函數(shù)。然后通過(guò)指針變量就可以找到并調(diào)用這個(gè)函數(shù)。我們把這種指向函數(shù)的指針變量稱為“函數(shù)指針變量”。

函數(shù)指針變量定義的一般形式為:

類型說(shuō)明符 (*指針變量名)();

其中“類型說(shuō)明符”表示被指函數(shù)的返回值的類型?!?* 指針變量名)”表示“*”后面的變量是定義的指針變量。最后的空括號(hào)表示指針變量所指的是一個(gè)函數(shù)。

例如:

int (*pf)();

表示pf是一個(gè)指向函數(shù)入口的指針變量,該函數(shù)的返回值(函數(shù)值)是整型。

本例用來(lái)說(shuō)明用指針形式實(shí)現(xiàn)對(duì)函數(shù)調(diào)用的方法。

int max(int a,int b){

if(ab)return a;

else return b;

}

main(){

int max(int a,int b);

int(*pmax)();

int x,y,z;

pmax=max;

printf("input two numbers:\n");

scanf("%d%d",x,y);

z=(*pmax)(x,y);

printf("maxmum=%d",z);

}

從上述程序可以看出用,函數(shù)指針變量形式調(diào)用函數(shù)的步驟如下:

1) 先定義函數(shù)指針變量,如后一程序中第9行 int (*pmax)();定義 pmax為函數(shù)指針變量。

2) 把被調(diào)函數(shù)的入口地址(函數(shù)名)賦予該函數(shù)指針變量,如程序中第11行 pmax=max;

3) 用函數(shù)指針變量形式調(diào)用函數(shù),如程序第14行 z=(*pmax)(x,y);

4) 調(diào)用函數(shù)的一般形式為:

(*指針變量名) (實(shí)參表)

使用函數(shù)指針變量還應(yīng)注意以下兩點(diǎn):

a) 函數(shù)指針變量不能進(jìn)行算術(shù)運(yùn)算,這是與數(shù)組指針變量不同的。數(shù)組指針變量加減一個(gè)整數(shù)可使指針移動(dòng)指向后面或前面的數(shù)組元素,而函數(shù)指針的移動(dòng)是毫無(wú)意義的。

b) 函數(shù)調(diào)用中"(*指針變量名)"的兩邊的括號(hào)不可少,其中的*不應(yīng)該理解為求值運(yùn)算,在此處它只是一種表示符號(hào)。

2 指針型函數(shù)

前面我們介紹過(guò),所謂函數(shù)類型是指函數(shù)返回值的類型。在C語(yǔ)言中允許一個(gè)函數(shù)的返回值是一個(gè)指針(即地址),這種返回指針值的函數(shù)稱為指針型函數(shù)。

定義指針型函數(shù)的一般形式為:

類型說(shuō)明符 *函數(shù)名(形參表)

{

…… /*函數(shù)體*/

}

其中函數(shù)名之前加了“*”號(hào)表明這是一個(gè)指針型函數(shù),即返回值是一個(gè)指針。類型說(shuō)明符表示了返回的指針值所指向的數(shù)據(jù)類型。

如:

int *ap(int x,int y)

{

...... /*函數(shù)體*/

}

表示ap是一個(gè)返回指針值的指針型函數(shù),它返回的指針指向一個(gè)整型變量。

本程序是通過(guò)指針函數(shù),輸入一個(gè)1~7之間的整數(shù),輸出對(duì)應(yīng)的星期名。

main(){

int i;

char *day_name(int n);

printf("input Day No:\n");

scanf("%d",i);

if(i0) exit(1);

printf("Day No:%2d--%s\n",i,day_name(i));

}

char *day_name(int n){

static char *name[]={ "Illegal day",

"Monday",

"Tuesday",

"Wednesday",

"Thursday",

"Friday",

"Saturday",

"Sunday"};

return((n1||n7) ? name[0] : name[n]);

}

本例中定義了一個(gè)指針型函數(shù)day_name,它的返回值指向一個(gè)字符串。該函數(shù)中定義了一個(gè)靜態(tài)指針數(shù)組name。name數(shù)組初始化賦值為八個(gè)字符串,分別表示各個(gè)星期名及出錯(cuò)提示。形參n表示與星期名所對(duì)應(yīng)的整數(shù)。在主函數(shù)中,把輸入的整數(shù)i作為實(shí)參,在printf語(yǔ)句中調(diào)用day_name函數(shù)并把i值傳送給形參n。day_name函數(shù)中的return語(yǔ)句包含一個(gè)條件表達(dá)式,n值若大于7或小于1則把name[0]指針?lè)祷刂骱瘮?shù)輸出出錯(cuò)提示字符串“Illegal day”。否則返回主函數(shù)輸出對(duì)應(yīng)的星期名。主函數(shù)中的第7行是個(gè)條件語(yǔ)句,其語(yǔ)義是,如輸入為負(fù)數(shù)(i0)則中止程序運(yùn)行退出程序。exit是一個(gè)庫(kù)函數(shù),exit(1)表示發(fā)生錯(cuò)誤后退出程序,exit(0)表示正常退出。

應(yīng)該特別注意的是函數(shù)指針變量和指針型函數(shù)這兩者在寫(xiě)法和意義上的區(qū)別。如int(*p)()和int *p()是兩個(gè)完全不同的量。

int (*p)()是一個(gè)變量說(shuō)明,說(shuō)明p是一個(gè)指向函數(shù)入口的指針變量,該函數(shù)的返回值是整型量,(*p)的兩邊的括號(hào)不能少。

int *p()則不是變量說(shuō)明而是函數(shù)說(shuō)明,說(shuō)明p是一個(gè)指針型函數(shù),其返回值是一個(gè)指向整型量的指針,*p兩邊沒(méi)有括號(hào)。作為函數(shù)說(shuō)明,在括號(hào)內(nèi)最好寫(xiě)入形式參數(shù),這樣便于與變量說(shuō)明區(qū)別。

對(duì)于指針型函數(shù)定義,int *p()只是函數(shù)頭部分,一般還應(yīng)該有函數(shù)體部分。

c語(yǔ)言函數(shù)指針的作用。

C語(yǔ)言中函數(shù)指針與普通指針沒(méi)什么差別,只是指向的內(nèi)容不同而已。主要作用:

1、實(shí)現(xiàn)面向?qū)ο缶幊讨械亩鄳B(tài)性。

2、回調(diào)函數(shù)。

函數(shù)指針是指向函數(shù)的指針變量。 因此“函數(shù)指針”本身首先應(yīng)是指針變量,只不過(guò)該指針變量指向函數(shù)。這正如用指針變量可指向整型變量、字符型、數(shù)組一樣,這里是指向函數(shù)。

C在編譯時(shí),每一個(gè)函數(shù)都有一個(gè)入口地址,該入口地址就是函數(shù)指針?biāo)赶虻牡刂?。有了指向函?shù)的指針變量后,可用該指針變量調(diào)用函數(shù),就如同用指針變量可引用其他類型變量一樣,在這些概念上是大體一致的。

函數(shù)指針有兩個(gè)用途:調(diào)用函數(shù)和做函數(shù)的參數(shù)。

本文名稱:c語(yǔ)言中字符指針函數(shù) c語(yǔ)言函數(shù)指針的用法
本文地址:http://jinyejixie.com/article44/dochdhe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、App開(kāi)發(fā)標(biāo)簽優(yōu)化、搜索引擎優(yōu)化定制開(kāi)發(fā)、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
富宁县| 宁安市| 长治市| 龙川县| 孝义市| 确山县| 那曲县| 谷城县| 安远县| 沅陵县| 兖州市| 谷城县| 怀远县| 河北省| 康定县| 长沙市| 富顺县| 连城县| 葵青区| 彰化县| 泰来县| 都兰县| 建昌县| 交口县| 女性| 寿光市| 措美县| 张家港市| 德州市| 恩平市| 濮阳县| 永新县| 青田县| 长葛市| 浙江省| 图木舒克市| 宜兰县| 吴忠市| 邓州市| 治多县| 翁源县|