真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

c語言中的參可以用函數(shù)嗎,C語言中函數(shù)必須要有參數(shù)

C語言 哪些可作為形參?形參可為函數(shù)嗎?

可以通過函數(shù)指針的方式,舉例如下:

成都創(chuàng)新互聯(lián)公司總部坐落于成都市區(qū),致力網站建設服務有成都網站設計、做網站、網絡營銷策劃、網頁設計、網站維護、公眾號搭建、重慶小程序開發(fā)、軟件開發(fā)等為企業(yè)提供一整套的信息化建設解決方案。創(chuàng)造真正意義上的網站建設,為互聯(lián)網品牌在互動行銷領域創(chuàng)造價值而不懈努力!

#include stdio.h

void fun1(void (*fun)())

{

fun();

}

void fun2()

{

printf("run fun2()\n");

}

int main()

{

fun1(fun2);

return 0;

}

C語言里面,什么是有參函數(shù),什么是無參函數(shù)

無參函數(shù),是指在主調函數(shù)調用被調函數(shù)時,主調函數(shù)不向被調函數(shù)傳遞數(shù)據(jù)。無參函數(shù)一般用來執(zhí)行特定的功能,可以有返回值,也可以沒有返回值,但一般以沒有返回值居多。

有參函數(shù),是指在主調函數(shù)調用被調函數(shù)時,主調函數(shù)通過參數(shù)向被調函數(shù)傳遞數(shù)據(jù)。在一般情況下,有參函數(shù)在執(zhí)行被調函數(shù)時會得到一個值并返回給主調函數(shù)使用。

擴展資料

1、定義有參函數(shù)的一般形式為:

函數(shù)類型 函數(shù)名(參數(shù)類型1 參數(shù)名1, 參數(shù)類型2 參數(shù)名2, …, 參數(shù)類型n 參數(shù)名n)

{

聲明部分

語句部分

}

2、有參函數(shù)使用注意事項:

(1)在定義函數(shù)時,必須要指定形參的類型。實參與形參的個數(shù)必須相等,若不相等就是語法錯誤。此外,實參與形參的類型要相同或賦值兼容。最好是相同,這樣不容易出錯。如果不相同則實參按形參的類型轉化,然后再送給形參。

(2)在傳遞數(shù)據(jù)時,實參與形參是按順序一一對應的。

c語言函數(shù)參數(shù)可以是另一個函數(shù)嗎

把函數(shù)名作為參數(shù)就是函數(shù)的地址了.

如下面的例子

#include

stdio.h

typedef

int

(*PFUN)(int

a,

int

b);//函數(shù)指針

int

add(int

a,

int

b)

{

return

(a+b);

}

void

fun(int

a,

int

b,

PFUN

pfun)

//函數(shù)指針作為函數(shù)的參數(shù)

{

printf(“%d\n",

pfun(a,b));

}

int

main()

{

int

a=5;

int

b=6;

PFUN

pfun=add;

//將函數(shù)指針指向add

fun(a,

b,

pfun);

return

0;

}

c語言中用函數(shù)做參數(shù)怎么用

數(shù)組元素就是下標變量,它與普通變量并無區(qū)別。 因此它作為函數(shù)實參使用與普通變量是完全相同的,在發(fā)生函數(shù)調用時,把作為實參的數(shù)組元素的值傳送給形參,實現(xiàn)單向的值傳送。【例5-4】說明了這種情況。

【例8-7】判別一個整數(shù)數(shù)組中各元素的值,若大于0 則輸出該值,若小于等于0則輸出0值。編程如下:#include stdio.hvoid nzp(int v){ if(v0) printf("%d ",v); else printf("%d ",0);}int main(void){ int a[5],i; printf("input 5 numbers\n"); for(i=0;i5;i++){ scanf("%d",a[i]); nzp(a[i]); } return 0;}

本程序中首先定義一個無返回值函數(shù)nzp,并說明其形參v為整型變量。在函數(shù)體中根據(jù)v值輸出相應的結果。在main函數(shù)中用一個for語句輸入數(shù)組各元素,每輸入一個就以該元素作實參調用一次nzp函數(shù),即把a[i]的值傳送給形參v,供nzp函數(shù)使用。

數(shù)組名作為函數(shù)參數(shù)

用數(shù)組名作函數(shù)參數(shù)與用數(shù)組元素作實參有幾點不同。

1) 用數(shù)組元素作實參時,只要數(shù)組類型和函數(shù)的形參變量的類型一致,那么作為下標變量的數(shù)組元素的類型也和函數(shù)形參變量的類型是一致的。因此,并不要求函數(shù)的形參也是下標變量。換句話說,對數(shù)組元素的處理是按普通變量對待的。用數(shù)組名作函數(shù)參數(shù)時,則要求形參和相對應的實參都必須是類型相同的數(shù)組,都必須有明確的數(shù)組說明。當形參和實參二者不一致時,即會發(fā)生錯誤。

2) 在普通變量或下標變量作函數(shù)參數(shù)時,形參變量和實參變量是由編譯系統(tǒng)分配的兩個不同的內存單元。在函數(shù)調用時發(fā)生的值傳送是把實參變量的值賦予形參變量。在用數(shù)組名作函數(shù)參數(shù)時,不是進行值的傳送,即不是把實參數(shù)組的每一個元素的值都賦予形參數(shù)組的各個元素。因為實際上形參數(shù)組并不存在,編譯系統(tǒng)不為形參數(shù)組分配內存。那么,數(shù)據(jù)的傳送是如何實現(xiàn)的呢?在我們曾介紹過,數(shù)組名就是數(shù)組的首地址。因此在數(shù)組名作函數(shù)參數(shù)時所進行的傳送只是地址的傳送,也就是說把實參數(shù)組的首地址賦予形參數(shù)組名。形參數(shù)組名取得該首地址之后,也就等于有了實在的數(shù)組。實際上是形參數(shù)組和實參數(shù)組為同一數(shù)組,共同擁有一段內存空間。

上圖說明了這種情形。圖中設a為實參數(shù)組,類型為整型。a占有以2000為首地址的一塊內存區(qū)。b為形參數(shù)組名。當發(fā)生函數(shù)調用時,進行地址傳送,把實參數(shù)組a的首地址傳送給形參數(shù)組名b,于是b也取得該地址2000。于是a,b兩數(shù)組共同占有以2000為首地址的一段連續(xù)內存單元。從圖中還可以看出a和b下標相同的元素實際上也占相同的兩個內存單元(整型數(shù)組每個元素占二字節(jié))。例如a[0]和b[0]都占用2000和2001單元,當然a[0]等于b[0]。類推則有a[i]等于b[i]。

【例8-8】數(shù)組a中存放了一個學生5門課程的成績,求平均成績。#include stdio.hfloat aver(float a[5]){ int i; float av,s=a[0]; for(i=1;i5;i++) s=s+a[i]; av=s/5; return av;}int main(void){ float sco[5],av; int i; printf("\ninput 5 scores:\n"); for(i=0;i5;i++) scanf("%f",sco[i]); av=aver(sco); printf("average score is %5.2f",av); return 0;}

本程序首先定義了一個實型函數(shù)aver,有一個形參為實型數(shù)組a,長度為5。在函數(shù)aver中,把各元素值相加求出平均值,返回給主函數(shù)。主函數(shù)main 中首先完成數(shù)組sco的輸入,然后以sco作為實參調用aver函數(shù),函數(shù)返回值送av,最后輸出av值。 從運行情況可以看出,程序實現(xiàn)了所要求的功能。

3) 前面已經討論過,在變量作函數(shù)參數(shù)時,所進行的值傳送是單向的。即只能從實參傳向形參,不能從形參傳回實參。形參的初值和實參相同,而形參的值發(fā)生改變后,實參并不變化,兩者的終值是不同的。而當用數(shù)組名作函數(shù)參數(shù)時,情況則不同。由于實際上形參和實參為同一數(shù)組,因此當形參數(shù)組發(fā)生變化時,實參數(shù)組也隨之變化。當然這種情況不能理解為發(fā)生了“雙向”的值傳遞。但從實際情況來看,調用函數(shù)之后實參數(shù)組的值將由于形參數(shù)組值的變化而變化。為了說明這種情況,把【例5.4】改為【例5.6】的形式。

【例8-9】題目同【例8.7】。改用數(shù)組名作函數(shù)參數(shù)。#include stdio.hvoid nzp(int a[5]){ int i; printf("\nvalues of array a are:\n"); for(i=0;i5;i++){ if(a[i]0) a[i]=0; printf("%d ",a[i]); }}int main(void){ int b[5],i; printf("\ninput 5 numbers:\n"); for(i=0;i5;i++) scanf("%d",b[i]); printf("initial values of array b are:\n"); for(i=0;i5;i++) printf("%d ",b[i]); nzp(b); printf("\nlast values of array b are:\n"); for(i=0;i5;i++) printf("%d ",b[i]); return 0;}

本程序中函數(shù)nzp的形參為整數(shù)組a,長度為5。主函數(shù)中實參數(shù)組b也為整型,長度也為5。在主函數(shù)中首先輸入數(shù)組b的值,然后輸出數(shù)組b的初始值。然后以數(shù)組名b為實參調用nzp函數(shù)。在nzp中,按要求把負值單元清0,并輸出形參數(shù)組a的值。 返回主函數(shù)之后,再次輸出數(shù)組b的值。從運行結果可以看出,數(shù)組b的初值和終值是不同的,數(shù)組b的終值和數(shù)組a是相同的。這說明實參形參為同一數(shù)組,它們的值同時得以改變。

用數(shù)組名作為函數(shù)參數(shù)時還應注意以下幾點:

①形參數(shù)組和實參數(shù)組的類型必須一致,否則將引起錯誤。

②形參數(shù)組和實參數(shù)組的長度可以不相同,因為在調用時,只傳送首地址而不檢查形參數(shù)組的長度。當形參數(shù)組的長度與實參數(shù)組不一致時,雖不至于出現(xiàn)語法錯誤(編譯能通過),但程序執(zhí)行結果將與實際不符,這是應予以注意的。

【例8.10】如把例8.9修改如下:#include stdio.hvoid nzp(int a[8]){ int i; printf("\nvalues of array aare:\n"); for(i=0;i8;i++){ if(a[i]0)a[i]=0; printf("%d ",a[i]); }}int main(void){ int b[5],i; printf("\ninput 5 numbers:\n"); for(i=0;i5;i++) scanf("%d",b[i]); printf("initial values of array b are:\n"); for(i=0;i5;i++) printf("%d ",b[i]); nzp(b); printf("\nlast values of array b are:\n"); for(i=0;i5;i++) printf("%d ",b[i]); return 0;}

本程序與【例8.9】程序比,nzp函數(shù)的形參數(shù)組長度改為8,函數(shù)體中,for語句的循環(huán)條件也改為i8。因此,形參數(shù)組a和實參數(shù)組b的長度不一致。編譯能夠通過,但從結果看,數(shù)組a的元素a[5]、a[6]、a[7]顯然是無意義的。

③在函數(shù)形參表中,允許不給出形參數(shù)組的長度,或用一個變量來表示數(shù)組元素的個數(shù)。例如,可以寫為:

void nzp(int a[])

或寫為

void nzp( int a[], int n )

其中形參數(shù)組a沒有給出長度,而由n值動態(tài)地表示數(shù)組的長度。n的值由主調函數(shù)的實參進行傳送。由此,【例8-10】又可改為【例8-11】的形式。

【例8-11】復制純文本新窗口

#include stdio.hvoid nzp(int a[],int n){ int i; printf("\nvalues of array a are:\n"); for(i=0;in;i++){ if(a[i]0) a[i]=0; printf("%d ",a[i]); }}int main(void){ int b[5],i; printf("\ninput 5 numbers:\n"); for(i=0;i5;i++) scanf("%d",b[i]); printf("initial values of array b are:\n"); for(i=0;i5;i++) printf("%d ",b[i]); nzp(b,5); printf("\nlast values of array b are:\n"); for(i=0;i5;i++) printf("%d ",b[i]); return 0;}

c語言中形參可以在本函數(shù)中直接使用嗎?

可以直接使用。但是調用函數(shù)的時候要用相同類型接收。例如:

int aa = 5;

int a = pw(aa);


當前題目:c語言中的參可以用函數(shù)嗎,C語言中函數(shù)必須要有參數(shù)
URL標題:http://weahome.cn/article/hdoeoe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部