return后接一個(gè)值。
10余年的西吉網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整西吉建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“西吉網(wǎng)站設(shè)計(jì)”,“西吉網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
在調(diào)用這個(gè)函數(shù)的函數(shù)里面,調(diào)用它的時(shí)候希望獲得一個(gè)值,如果不希望獲得這個(gè)值的時(shí)候,用void聲明就好。如果需要,比如說需要得到一個(gè)整形值
就聲明
int func()
在調(diào)用它的比如main里面
func()的作用就可以相當(dāng)于一個(gè)int型常數(shù)
比如外面定義了
int max(int a,int b)
{
return ab?a:b;
}
主函數(shù)里面是
main()
{
int A;
A=max(1,2);
}
這時(shí)候就是通過max計(jì)算 12 則return 一個(gè)1 ,12 則return一個(gè)2。很明顯12 所以這里max(1,2)就會(huì)return 一個(gè) 2
這時(shí)候主函數(shù)里的max(1,2)就相當(dāng)于一個(gè)常數(shù) 2
A=max(1,2)的作用就相當(dāng)于A=2
這個(gè)意思。
在C語言中,一般情況下函數(shù)的返回值是通過函數(shù)中的return語句來實(shí)現(xiàn)的,每調(diào)用一次return語句只能從函數(shù)中返回一個(gè)值,下面我們就來看看C語言怎么讓一個(gè)函數(shù)返回多個(gè)值!
工具/材料
C語言的編輯器
01
全局變量傳遞
這種方式算是最不科學(xué)的規(guī)范,打破了軟件開發(fā)需要的閉環(huán)策略,但在基本語法上是支持的,C語言里面最好少涉獵全局變量,使用出錯(cuò)的風(fēng)險(xiǎn)會(huì)提升很多,真要想使用建議還是用靜態(tài)全局變量直接在變量的前面加上static修飾符。
02
使用數(shù)組名或指針作為函數(shù)的形參
被調(diào)函數(shù)的行參是一個(gè)指針,然后在被調(diào)函數(shù)中返回第一個(gè)值,被調(diào)函數(shù)改變指針參數(shù)指向的值,這樣主調(diào)函數(shù)相應(yīng)的值就改變了,也就相當(dāng)于返回了第二個(gè)值了。這樣就可以實(shí)現(xiàn)返回多個(gè)值!
03
結(jié)構(gòu)體指針返回
結(jié)構(gòu)體是C語言涉及數(shù)據(jù)結(jié)構(gòu)的最直接的容器,通常在編程過程中實(shí)現(xiàn)一個(gè)功能模塊在主函數(shù)里,我們可以定義一個(gè)結(jié)構(gòu)體類型的變量,然后直接用函數(shù)返回值賦值就可以了。
addrecord()函數(shù)return后不就返回主函數(shù)了嗎
void
addrecord();
void
main()
{
.....
addrecord();
...//子函數(shù)返回就自動(dòng)從這運(yùn)行
}
你可以這么理解,比如我們定義了一個(gè)函數(shù)fun(),如果這個(gè)函數(shù)有返回值,那么在調(diào)用程序里面(比如主函數(shù))就可以把這個(gè)函數(shù)當(dāng)成一個(gè)數(shù)使用;如果沒有返回值,那么通常他就是一個(gè)獨(dú)立的語句存在。
比如fun函數(shù)里面有個(gè)return 0;表示返回值是零,那么在調(diào)用函數(shù)里面就可以存在諸如
a=fun();b=a+fun();if(fun()=0{};……這類的語句,表示a=0;b=a+0;if(00){};等等,當(dāng)然也可能是返回一個(gè)變量的值,你個(gè)指針的值是一樣的。
如果沒有return 語句,那么函數(shù)沒有返回值,調(diào)用函數(shù)里面就不能把他當(dāng)做一個(gè)數(shù)值來使用,會(huì)出現(xiàn):
fun();單獨(dú)成句的語句,在fun()里面可能進(jìn)行了一些操作,但不需要結(jié)果。
C語言自帶的函數(shù)通常都有返回值,計(jì)算函數(shù)返回計(jì)算結(jié)果,操作函數(shù)返回操作結(jié)果(成功返回1,失敗返回0)
函數(shù)參數(shù)和
返回值
三種傳遞方式:值傳遞、指針傳遞和引用傳遞
引用與指針的比較
引用是
C++中的概念,初學(xué)者容易把引用和指針混淆一起。一下程序中,n
是m
的一個(gè)引用(
reference
),m
是被引用物(referent)。
int
m;
int
n
=
m;
n
相當(dāng)于m
的別名(綽號(hào)),對(duì)n
的任何操作就是對(duì)m
的操作。所以n
既不是m
的拷貝,也不是指向m
的指針,其實(shí)n
就是m
它自己。
C++語言
中,函數(shù)的參數(shù)和返回值的傳遞方式有三種:值傳遞、指針傳遞和引用傳遞。
以下是“值傳遞”的示例程序。由于Func1
函數(shù)體內(nèi)的x
是
外部變量
n
的一份拷貝,改變x
的值不會(huì)影響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
的指針,改變?cè)撝羔樀膬?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
是同一個(gè)東西,改變x
等于改變n,所以n
的值成為10。
void
Func3(int
x)
{
x
=
x
+
10;
}
int
n
=
0;
Func3(n);
cout
“n
=
”
n
endl;
//
n
=
10
對(duì)比上述三個(gè)示例程序,會(huì)發(fā)現(xiàn)“引用傳遞”的性質(zhì)象“指針傳遞”,而書寫方式象“值傳遞”。實(shí)際上“引用”可以做的任何事情“指針”也都能夠做,為什么還要“引用”這東西?
答案是“用適當(dāng)?shù)墓ぞ咦銮∪缙浞值墓ぷ鳌薄?/p>
在c中任何函數(shù)都有返回值,這個(gè)是定下的,主函數(shù)也有返回值
返回值分幾個(gè)方面,逐個(gè)說一下
主函數(shù)的返回值,這個(gè)一般用戶用不到,程序執(zhí)行的時(shí)候,系統(tǒng)會(huì)根據(jù)這個(gè)返回值來判斷程序的運(yùn)行結(jié)果
不管定義神馬類型的返回值,在tc中默認(rèn)為void型(這個(gè)可以省略),可以根據(jù)需要自己定義都可以。
vc中好像必須寫,要不然編譯系統(tǒng)提示出錯(cuò)
子函數(shù)的返回值,分兩類
void,也就是在不需要子函數(shù)返回?cái)?shù)值的時(shí)候用到。注意的是不需要不代表沒有返回值。調(diào)用成功返回1,不成功返回0,我好像在哪里看到過這個(gè)說法,我不確定
非void型,這個(gè)返回值類型根據(jù)定義來返回
值得注意的是,在子函數(shù)中,只要執(zhí)行return一定結(jié)束子函數(shù),不管后面有多少代碼
一些系統(tǒng)自帶的函數(shù),如printf,scanf等,最好了解他的返回值