欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
C語(yǔ)言學(xué)習教程第六章-指針(5)
使用字符串指針變量與字符數組的區別
用字符數組和字符指針變量都可實(shí)現字符串的存儲和運算。 但是兩者是有區別的。在使用時(shí)應注意以下幾個(gè)問(wèn)題:
1. 字符串指針變量本身是一個(gè)變量,用于存放字符串的首地址。而字符串本身是存放在以該首地址為首的一塊連續的內存空間中并以‘\0’作為串的結束。字符數組是由于若干個(gè)數組元素組成的,它可用來(lái)存放整個(gè)字符串。
2. 對字符數組作初始化賦值,必須采用外部類(lèi)型或靜態(tài)類(lèi)型,如: static char st[]={“C Language”};而對字符串指針變量則無(wú)此限制,如: char *ps="C Language";
3. 對字符串指針?lè )绞?char *ps="C Language";可以寫(xiě)為: char *ps; ps="C Language";而對數組方式:
static char st[]={"C Language"};
不能寫(xiě)為:
char st[20];st={"C Language"};
而只能對字符數組的各元素逐個(gè)賦值。
從以上幾點(diǎn)可以看出字符串指針變量與字符數組在使用時(shí)的區別,同時(shí)也可看出使用指針變量更加方便。前面說(shuō)過(guò),當一個(gè)指針變量在未取得確定地址前使用是危險的,容易引起錯誤。但是對指針變量直接賦值是可以的。因為C系統對指針變量賦值時(shí)要給以確定的地址。因此,
char *ps="C Langage";
或者 char *ps;
ps="C Language";都是合法的。
函數指針變量
在C語(yǔ)言中規定,一個(gè)函數總是占用一段連續的內存區, 而函數名就是該函數所占內存區的首地址。 我們可以把函數的這個(gè)首地址(或稱(chēng)入口地址)賦予一個(gè)指針變量, 使該指針變量指向該函數。然后通過(guò)指針變量就可以找到并調用這個(gè)函數。 我們把這種指向函數的指針變量稱(chēng)為“函數指針變量”。
函數指針變量定義的一般形式為:
類(lèi)型說(shuō)明符 (*指針變量名)();
其中“類(lèi)型說(shuō)明符”表示被指函數的返回值的類(lèi)型。“(* 指針變量名)”表示“*”后面的變量是定義的指針變量。 最后的空括號表示指針變量所指的是一個(gè)函數。
例如: int (*pf)();
表示pf是一個(gè)指向函數入口的指針變量,該函數的返回值(函數值)是整型。
下面通過(guò)例子來(lái)說(shuō)明用指針形式實(shí)現對函數調用的方法。
int max(int a,int b){
if(a>b)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);
}
從上述程序可以看出用,函數指針變量形式調用函數的步驟如下:1. 先定義函數指針變量,如后一程序中第9行 int (*pmax)();定義pmax為函數指針變量。
2. 把被調函數的入口地址(函數名)賦予該函數指針變量,如程序中第11行 pmax=max;
3. 用函數指針變量形式調用函數,如程序第14行 z=(*pmax)(x,y); 調用函數的一般形式為: (*指針變量名) (實(shí)參表)使用函數指針變量還應注意以下兩點(diǎn):
a. 函數指針變量不能進(jìn)行算術(shù)運算,這是與數組指針變量不同的。數組指針變量加減一個(gè)整數可使指針移動(dòng)指向后面或前面的數組元素,而函數指針的移動(dòng)是毫無(wú)意義的。
b. 函數調用中"(*指針變量名)"的兩邊的括號不可少,其中的*不應該理解為求值運算,在此處它只是一種表示符號。
指針型函數
前面我們介紹過(guò),所謂函數類(lèi)型是指函數返回值的類(lèi)型。 在C語(yǔ)言中允許一個(gè)函數的返回值是一個(gè)指針(即地址), 這種返回指針值的函數稱(chēng)為指針型函數。
定義指針型函數的一般形式為:
類(lèi)型說(shuō)明符 *函數名(形參表)
{
…… /*函數體*/
}
其中函數名之前加了“*”號表明這是一個(gè)指針型函數,即返回值是一個(gè)指針。類(lèi)型說(shuō)明符表示了返回的指針值所指向的數據類(lèi)型。
如:
int *ap(int x,int y)
{
...... /*函數體*/
}
表示ap是一個(gè)返回指針值的指針型函數, 它返回的指針指向一個(gè)整型變量。下例中定義了一個(gè)指針型函數 day_name,它的返回值指向一個(gè)字符串。該函數中定義了一個(gè)靜態(tài)指針數組name。name 數組初始化賦值為八個(gè)字符串,分別表示各個(gè)星期名及出錯提示。形參n表示與星期名所對應的整數。在主函數中, 把輸入的整數i作為實(shí)參, 在printf語(yǔ)句中調用day_name函數并把i值傳送給形參 n。day_name函數中的return語(yǔ)句包含一個(gè)條件表達式, n 值若大于7或小于1則把name[0] 指針?lè )祷刂骱瘮递敵龀鲥e提示字符串“Illegal day”。否則返回主函數輸出對應的星期名。主函數中的第7行是個(gè)條件語(yǔ)句,其語(yǔ)義是,如輸入為負數(i<0)則中止程序運行退出程序。exit是一個(gè)庫函數,exit(1)表示發(fā)生錯誤后退出程序, exit(0)表示正常退出。
應該特別注意的是函數指針變量和指針型函數這兩者在寫(xiě)法和意義上的區別。如int(*p)()和int *p()是兩個(gè)完全不同的量。int(*p)()是一個(gè)變量說(shuō)明,說(shuō)明p 是一個(gè)指向函數入口的指針變量,該函數的返回值是整型量,(*p)的兩邊的括號不能少。int *p() 則不是變量說(shuō)明而是函數說(shuō)明,說(shuō)明p是一個(gè)指針型函數,其返回值是一個(gè)指向整型量的指針,*p兩邊沒(méi)有括號。作為函數說(shuō)明, 在括號內最好寫(xiě)入形式參數,這樣便于與變量說(shuō)明區別。 對于指針型函數定義,int *p()只是函數頭部分,一般還應該有函數體部分。
main(){
int i;
char *day_name(int n);
printf("input Day No:\n");
scanf("%d",&i);
if(i<0) 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((n<1||n>7) ? name[0] : name[n]);
}
本程序是通過(guò)指針函數,輸入一個(gè)1~7之間的整數, 輸出對應的星期名。指針數組的說(shuō)明與使用一個(gè)數組的元素值為指針則是指針數組。 指針數組是一組有序的指針的集合。 指針數組的所有元素都必須是具有相同存儲類(lèi)型和指向相同數據類(lèi)型的指針變量。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
《C語(yǔ)言程序設計教程》第八章指針
計算機程序設計基礎(C語(yǔ)言)第8章 指針
C語(yǔ)言面試題
C語(yǔ)言難點(diǎn)分析整理
《大學(xué)C語(yǔ)言程序設計》題庫-選擇題四
面試題(Qt + 函數指針)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久