//兄弟首先啊,你傳的參數(shù)里面 有個 數(shù)組長度 那么這個 長度是不是可以認(rèn)為是你的數(shù)字個數(shù)呢。
創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括廬陽網(wǎng)站建設(shè)、廬陽網(wǎng)站制作、廬陽網(wǎng)頁制作以及廬陽網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,廬陽網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到廬陽省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
//其次啊 通過形參 返回, 例如你傳一個數(shù)組 a[10] 那么形參只是復(fù)制的 a的地址 傳進(jìn)來, 所以返回不可能通過形參返回, 只能通過形參指向的地址 改變地址內(nèi)的值。然后你可以在函數(shù)外面調(diào)用這個值. 嚴(yán)格意義上講 就沒有通過形參返回這一說,因?yàn)樾螀⒃诤瘮?shù)調(diào)用完以后就會被釋放,他是處于棧中的,只能通過形參所指向的地址返回,除非c++的參數(shù)引用,可以通過參數(shù)返回。
//如下例:
void func(double *arr, int num)//第一個參數(shù)是 數(shù)組 第二個參數(shù)是數(shù)組元素個數(shù)
{
for (int i = 1; i num; i++)
{
arr[0] += arr[i];//所有的數(shù)相加的結(jié)果放在了arr[0]
}
arr[1] = num;//這個是數(shù)組內(nèi)數(shù)字個數(shù) 強(qiáng)制int轉(zhuǎn)double
}
int _tmain(int argc, _TCHAR*argv[])//我用的c++main 你可以用c main
{
double a[10] = { 0.254, 0.77, 1.65, 5.95, 47.5, 54.22, 0.356, 1.25, 12.3, 12.8 };//10個元素
func(a, 10);
printf("總和是:%lf,數(shù)字個數(shù)為:%lf", a[0],a[1]);
getchar();
}
你好!
1,C語言中,所謂傳參一般調(diào)用一個函數(shù)時,傳遞過來的參數(shù),否則被調(diào)用函數(shù)是無法使用調(diào)用函數(shù)里面的參數(shù)的,除了全局參數(shù)等。
2,C語言中的返回值一般一return 的形式出現(xiàn),就是這個函數(shù)結(jié)束時,會拋出需要返回的一個值。在調(diào)用的函數(shù)中可以接收。下面我舉一個完整的例子來說明這幾者的關(guān)系。
3.實(shí)例說明:
#include?stdio.h
int?counter(int?i);
void?main(void)
{
int?j,m;
m?=?5;
j?=?counter(m);???//此處調(diào)用函數(shù)counter();并且傳入?yún)?shù),一個int型的m,
//次函數(shù)在結(jié)束時將返回一個int型,這里用j來接收
printf("返回值為:%d\n",j);
}
int?counter(int?i)?????//這里是函數(shù)定義,int?counter();說明此函數(shù)將會返回一個
{??????????????????????//int型
//counter(int?i);表示在調(diào)用此函數(shù)時需要傳入一個int型參數(shù)
return?i?+?1;??????//此處是函數(shù)將要返回的值,傳進(jìn)來的是5,那返回?5?+?1,返回6
}
不懂可繼續(xù)追問!
1、
第一個和第二個都是值傳遞,不改變原值。
第三個是地址傳遞,改變地址里的值,實(shí)際的值就改變了。
2、
返回值在函數(shù)結(jié)束,也就消失了,和局部變量一樣。
函數(shù)的返回值通過return語句來執(zhí)行,即return后的變量或表達(dá)式的值,就為該函數(shù)的返回值(你可以根據(jù)需要自定義返回什么值),而返回值的類型是指該值你想要得到的類型,比如return
a;(a的類型,你在函數(shù)體里定義的是int
a;但根據(jù)需要,你要的是一個float型的返回值),于是,這樣定義一個函數(shù):
float
函數(shù)名(參數(shù)列表)
{
int
a;
函數(shù)體;
……
return
a;
}
這樣,返回值a就變成了float型。
①為什么需要return?
為了回答這個問題,
我打算用 模塊思維 來解釋。
②定義模塊(形參模塊)
定義函數(shù):f(s)(a,b)
滿足公式:s=a+b
函數(shù)名:f(s)
形參: a,b(公式中的 變量 )
函數(shù)返回值:return s
③調(diào)用模塊(實(shí)參模塊)
主函數(shù):main()表示用戶自己編寫的部分
調(diào)用函數(shù):f(s)(1,2)
滿足公式:x=f(s)(1,2)
函數(shù)名:f(s)和定義函數(shù)一致,產(chǎn)生調(diào)用
實(shí)參 :1,2( 賦值 給公式的值)
求值:printf("%d\n",x),求x的值?
④值的傳遞過程
調(diào)用模塊 中調(diào)用函數(shù)x=f(s)(1,2)
將實(shí)參1和2的值賦值給
定義模塊 中的形參a和b
(實(shí)參到形參是單向傳遞,不可逆)
定義模塊計(jì)算出s=a+b=1+2=3
定義模塊 中的return s
將s的值賦值給
調(diào)用模塊 中的函數(shù)f(s)(1,2)
即x=f(s)(1,2)=s=3
~
return s的作用
就是將定義模塊中的s
賦值 給調(diào)用模塊中的調(diào)用函數(shù)
如果沒有return s
調(diào)用模塊中的調(diào)用函數(shù)將永遠(yuǎn)沒有定值
即所求x 無定值
這一點(diǎn)和數(shù)學(xué)不一樣,
數(shù)學(xué)中
同一函數(shù)名的值是 通用 的,
C語言中
定義函數(shù)和調(diào)用函數(shù)的值是 隔離 的,
盡管函數(shù)名一樣
如果不賦值,調(diào)用函數(shù)永遠(yuǎn)無定值。
c=max(a,b);
//這句是
當(dāng)max
函數(shù)結(jié)束的時候
把這個函數(shù)里
return
回的值
賦值給c
也就是z
當(dāng)調(diào)用函數(shù)所填寫的參數(shù)叫實(shí)參
就是實(shí)實(shí)在在的值
函數(shù)里面的參數(shù)
就是max(int
x,
int
y)
這種用來接收實(shí)參的叫形參