因為你傳遞的是p的值,在point中被更改的只是p的一個拷貝,而不是p本身。在main函數(shù)中的p一直沒變過
成都創(chuàng)新互聯(lián)是一家從事企業(yè)網(wǎng)站建設(shè)、網(wǎng)站制作、成都網(wǎng)站制作、行業(yè)門戶網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計制作的專業(yè)網(wǎng)絡(luò)公司,擁有經(jīng)驗豐富的網(wǎng)站建設(shè)工程師和網(wǎng)頁設(shè)計人員,具備各種規(guī)模與類型網(wǎng)站建設(shè)的實力,在網(wǎng)站建設(shè)領(lǐng)域樹立了自己獨特的設(shè)計風格。自公司成立以來曾獨立設(shè)計制作的站點近千家。
如果你改成這樣就可以修改p本身的值了:
#include stdio.h
void point(char**p)
{*p+=3;}
int main()
{char b[4]={'a','b','c','d'},*p=b;
point(p);
printf("%c\n",*p);
}
就算函數(shù)調(diào)用成功,輸出也為d,而不是a,數(shù)組下標是從0開始.
被調(diào)函數(shù)的計算結(jié)果在離開函數(shù)大括號后就已經(jīng)不在了,
回到主函數(shù)的變量p并不是調(diào)用函數(shù)后的計算結(jié)果,p仍然是
數(shù)組b的首地址,所以輸出是a.
char
*p;//定義全局變量
point(char
*c)
{
p=c+3;
}//全局變量返回計算結(jié)果
main()
{
char
b[4]={'a','b','c','d'};
p=b;//p為數(shù)組首地址
point(p
);//調(diào)用函數(shù),地址加3
printf("%c\n
",
*p);//輸出為b[3]
}
程序最后一句如果是:printf("%c\n",*p); 輸出 a。
point函數(shù)的功能:使傳入的指針偏移三個單位。
當你在main函數(shù)中調(diào)用point函數(shù),將p指針的值傳給point函數(shù)進行偏移。
在程序運行中當執(zhí)行一個函數(shù)時都是開辟一段空間讓函數(shù)執(zhí)行,當執(zhí)行完畢之后程序就會收回這段空間。
所以說當你執(zhí)行完point之后程序就收回了空間,所以在point函數(shù)中的p的值增加了3.但是當這個函數(shù)執(zhí)行結(jié)束后這段空間就被釋放了,所以在main函數(shù)中p的值不變,所以打印出來得還是 a。
本文標題:c語言point函數(shù) c語言中point的用法
文章鏈接:http://www.rwnh.cn/article4/ddgoioe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、網(wǎng)站設(shè)計公司、服務(wù)器托管、App設(shè)計、外貿(mào)網(wǎng)站建設(shè)、面包屑導航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)