fun4()是正確的。為了在函數(shù)中改變了的變量能被其它函數(shù)調(diào)用,正確的辦法是用指針變量作為函數(shù)參數(shù),在函數(shù)執(zhí)行過程中使指針變量所指向的變量值發(fā)生變化。
專注于為中小企業(yè)提供網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)洛江免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
/ 編寫c語言程序,實(shí)現(xiàn)交換兩個變量值的操作。要求:使用形參為指針的函數(shù)swap完成交換功能。主函數(shù)中,使用整型指針從鍵盤輸入兩個整數(shù),通過調(diào)用swap完成交換 輸出交換前后的變量值進(jìn)行比較。
不知道你要交換的兩個變量類型,所以這里以整型數(shù)據(jù)交換為例,以下swap函數(shù)實(shí)現(xiàn)了交換兩個整型變量值的功能:include stdio.h// 交換給定指針指向整型變量的值。
在C語言中,通過函數(shù)參數(shù)傳遞,進(jìn)行兩個數(shù)的交換,必須采用傳遞指針的方式,同時,在函數(shù)中,一定要對兩個指針中的數(shù)據(jù)內(nèi)容進(jìn)行交換才能達(dá)到交換實(shí)參地址中數(shù)據(jù)的目的。
函數(shù)內(nèi)部都是指針的操作,根本沒有改變指針指向的值,所以px和py指向的值沒有交換。
void swap2(int *px,int *py){int *t;t=px;px=py;py=t;}swap2函數(shù)的功能是交換兩個指針指向的值,函數(shù)內(nèi)部都是指針的操作,根本沒有改變指針指向的值,所以px和py指向的值沒有交換。
因?yàn)槭褂玫刂纷鲄?shù),那么傳參就是傳地址啊,當(dāng)然要傳u_x即&x啦 另外,對指針來說,定義的時候加*是為了區(qū)別指針變量與非指針變量,如果函數(shù)定義中的int *a,int *b的兩個星號去掉,那就說明形參變量不是指針類型了。
創(chuàng)建數(shù)組;2 輸入數(shù)組各個元素值;3 遍歷,求最大,最小,和平均值;4 輸出結(jié)果。為提高效率,其中2,3兩步可在同一個循環(huán)中完成。
includestdio.hint main() { int a[] = {1,2,3,4,5,6,7,8,9,10};int max, min;max = min = a[0]; //假設(shè)第1個元素即是最大值也是最小值。
新建一個工程和.c文件,并且輸入主函數(shù)和頭文件。定義全局變量。定義變量類型。用兩個for語句給數(shù)組元素賦值。調(diào)用求最小值的函數(shù)。函數(shù)的總體流程如下圖。
for(i=1;iN;i++) 數(shù)組下標(biāo)是 0開始的。 不是1 。 1就不對了。
1、應(yīng)該改為 if((*cmp)(a[i],a[i+1]))swap(a+i,a+i+1);才對。估記swap是交換兩個地址的內(nèi)容。b u b b l e _ s o r t函數(shù)的最后一個參數(shù)是指向函數(shù)的指針,即是函數(shù)的入口地址。
2、一個函數(shù)(actionfun)作為另一個函數(shù)的參數(shù)(mainfun),實(shí)際上是在運(yùn)行主函數(shù)mainfun的時候,得到的一些數(shù)值傳入到actionfun函數(shù)中,actionfun為主函數(shù)做一些設(shè)置也可以執(zhí)行一些其他的功能,但都要從主函數(shù)mainfun中得到參數(shù)。
3、swap() 中是 int *p1 和int *p2這是因?yàn)檫@是swap的定義,既然是定義就要聲明參數(shù)的類型,這里聲明的是int*類型,那使用的時候就要傳遞int*類型的。主函數(shù)里的類型也是int*,對應(yīng)上了,就可以了。
4、因?yàn)閳D一中通過指針,交換的是main()中變量i,j的值;而圖二中,交換的是swap()中形參變量a和b的值,隨著函數(shù)調(diào)用的返回,形參消失了,交換沒有起作用。
5、以函數(shù)指針作為形參,即可實(shí)現(xiàn)函數(shù)名作為參數(shù),由另一個函數(shù)調(diào)用。如 void func(int (*a)(int)){ int r = 100l; (*a)(r);}即可傳入函數(shù)指針,并以r為參數(shù),調(diào)用該指針指向的函數(shù)。
1、C語言中,函數(shù)參數(shù)只能傳值。與傳值對應(yīng)的是傳引用,C語言不支持函數(shù)參數(shù)傳引用,C++語言才支持。C++傳引用函數(shù):void foo(int& a) { a = 3; } 假如a = 2,執(zhí)行foo(a)后,a = 3。
2、利用指針作函數(shù)參數(shù),設(shè)計一函數(shù)實(shí)現(xiàn)將n個元素進(jìn)行排序 將這n個元素存在數(shù)組里,然后用指針類型參數(shù)接收即作為形參,然后采用排序算法對這些元素進(jìn)行排序即可 C語言,編寫一函數(shù),其功能是求一個長整數(shù)各位數(shù)字之和。
3、這是因?yàn)樵贑語言中,主調(diào)函數(shù)到子函數(shù)的參數(shù)傳遞都只是單向的。為了要把在子函數(shù)中的操作效果帶回到主調(diào)函數(shù)中,就只有利用指針(指向主調(diào)函數(shù)中的變量),直接把主調(diào)函數(shù)中變量的值進(jìn)行修改。
4、選D 因?yàn)榈谝粋€參數(shù)是地址傳遞,fun(&b,a);中傳入a字符。*c=*c+1將c的值變?yōu)閎字符。主函數(shù)的值改變。第二個參數(shù)是值傳遞,所以在函數(shù)中d的值為B字符。但是并不影響主函數(shù)的值,所以主函數(shù)輸出a的值是A。
您好,針對這個問題 Status InOrderTraverse(BiTree T ,Status(*Visit)(TElemType e))函數(shù)中第2個參數(shù)是一個指向函數(shù)的指針,這樣做的目的是為了程序的靈活性。
因?yàn)槭褂玫刂纷鲄?shù),那么傳參就是傳地址啊,當(dāng)然要傳u_x即&x啦 另外,對指針來說,定義的時候加*是為了區(qū)別指針變量與非指針變量,如果函數(shù)定義中的int *a,int *b的兩個星號去掉,那就說明形參變量不是指針類型了。
fun(&b,a);中傳入a字符。*c=*c+1將c的值變?yōu)閎字符。主函數(shù)的值改變。第二個參數(shù)是值傳遞,所以在函數(shù)中d的值為B字符。但是并不影響主函數(shù)的值,所以主函數(shù)輸出a的值是A。b的值是b。
新聞標(biāo)題:c語言函數(shù)指針作函數(shù)參數(shù) c語言指針做函數(shù)參數(shù)
URL網(wǎng)址:http://chinadenli.net/article49/dehgpeh.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、軟件開發(fā)、App設(shè)計、、服務(wù)器托管、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)