函數(shù)參數(shù)和
贊皇網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),贊皇網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為贊皇成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的贊皇做網(wǎng)站的公司定做!
返回值
三種傳遞方式:值傳遞、指針傳遞和引用傳遞
引用與指針的比較
引用是
C++中的概念,初學(xué)者容易把引用和指針混淆一起。一下程序中,n
是m
的一個引用(
reference
),m
是被引用物(referent)。
int
m;
int
n
=
m;
n
相當(dāng)于m
的別名(綽號),對n
的任何操作就是對m
的操作。所以n
既不是m
的拷貝,也不是指向m
的指針,其實n
就是m
它自己。
C++語言
中,函數(shù)的參數(shù)和返回值的傳遞方式有三種:值傳遞、指針傳遞和引用傳遞。
以下是“值傳遞”的示例程序。由于Func1
函數(shù)體內(nèi)的x
是
外部變量
n
的一份拷貝,改變x
的值不會影響n,
所以n
的值仍然是0。
void
Func1(int
x)
{
x
=
x
+
10;
}
int
n
=
0;
Func1(n);
cout
“n
=
”
n
endl;
//
n
=
以下是“指針傳遞”的示例程序。由于Func2
函數(shù)體內(nèi)的x
是指向外部變量n
的指針,改變該指針的內(nèi)容將導(dǎo)致n的值改變,所以n
的值成為10。
void
Func2(int
*x)
{
(*
x)
=
(*
x)
+
10;
}
int
n
=
0;
Func2(n);
cout
“n
=
”
n
endl;
//
n
=
10
以下是“引用傳遞”的示例程序。由于Func3
函數(shù)體內(nèi)的x
是外部變量n
的引用,x
和n
是同一個東西,改變x
等于改變n,所以n
的值成為10。
void
Func3(int
x)
{
x
=
x
+
10;
}
int
n
=
0;
Func3(n);
cout
“n
=
”
n
endl;
//
n
=
10
對比上述三個示例程序,會發(fā)現(xiàn)“引用傳遞”的性質(zhì)象“指針傳遞”,而書寫方式象“值傳遞”。實際上“引用”可以做的任何事情“指針”也都能夠做,為什么還要“引用”這東西?
答案是“用適當(dāng)?shù)墓ぞ咦銮∪缙浞值墓ぷ鳌薄?/p>
c語言怎樣從分函數(shù)回到主函數(shù)的方法。
如下參考:
1.通過使用指針,在調(diào)用函數(shù)時,傳遞一個地址參數(shù)并使用指針更改其值;因此,修改后的值成為原始參數(shù),如下所示。
2.使用指針返回的結(jié)果如下圖所示。
3.使用structure:由于結(jié)構(gòu)是用戶定義的數(shù)據(jù)類型,因此可以定義一個包含兩個整型變量的結(jié)構(gòu),在這些變量中存儲越來越大和越來越小的值,然后使用該結(jié)構(gòu)的值。
4.通過使用這個結(jié)構(gòu),下面顯示的結(jié)果將返回,如下圖。
5.通過使用數(shù)組,當(dāng)數(shù)組作為參數(shù)跟蹤傳遞時,基地址將傳遞給函數(shù),因此對數(shù)組副本所做的任何更改都將更改為原始數(shù)組,如下圖。
6.通過使用數(shù)組,返回的結(jié)果如下圖所示。
這條語句一般情況下加在主函數(shù)的最后,表示程序運行正常,則返回一個整數(shù)值0。其實在windows下一般沒有這個要求,除非是一個程序調(diào)用另外一個程序,或者在unix和linux下系統(tǒng)會要求一個程序返回一個整數(shù)值。
要返回字符串 需要返回char*類型
需要注意的是 返回的字符串 不能是該函數(shù)的局部變量,否則會導(dǎo)致出錯
可以是參數(shù)字符串,全局變量,靜態(tài)局部變量,或者動態(tài)分配的內(nèi)存
比如
char?*my_str_cpy(char?*d,?char?*s)
{
char?*p=d;
while(*p++=*s++);
return?d;//返回參數(shù)字符串。?
}
參數(shù)和返回值是兩碼事,不要當(dāng)成一個詞。無參無返回值函數(shù) void faction() { } //前面的void就是返回值的類型 ‘void’是空的意思,就是說返回值是空,也就是無返回值的意思有參無返回值函數(shù) void faction(int i){ } //參數(shù)為整形的函數(shù),且也是無返回值的。無參有返回值函數(shù) int faction(){ } //返回值為int 型的函數(shù),且是無參的。有參有返回值函數(shù) char faction(int i) //返回值為char的函數(shù),且參數(shù)是int 型