我初學C誰能給我講講viod函式和傳值傳參的問題

2022-12-26 19:25:52 字數 4719 閱讀 1830

1樓:匿名使用者

問題1解答:

retrun就是返回的意思,舉個例子,比如你請人幫你做一件事,做完後他是不是該給你個答覆啊,函式就好比是可以完成某個任務人一樣,你呼叫函式幫你做某事,而它用return把結果返回給你,例程:

//返回值型別為int型,這個函式計算兩個引數的和並返回

int sum( int a, int b )

int k0 = 10;

int k1 = 20;

int c = sum(k0, k1);//執行完這句後c=30,想想為什麼

關於void,生活中是不是有這樣一種情況,我告訴你去做某事,無論成功失敗我都不關心,所以你也不必在做完後跑來告訴我。所以返回值型別為void的函式就不需用return語句返回結果了。

你所說的函式中套用迴圈,數值會不會有變化,這就要看你的**了,所以不好回答,要根據具體**具體分析,這是需要點耐心的。

問題2解答:

引用是變數的**,所以通過變數的引用也可以訪問和修改變數的值,其本質就是變數的位址,但又和指標有所區別,指標可以指向null(也就不存在的變數),而引用不能指向null。用傳引用的方式呼叫函式,有三個優點,一就是不會像傳值呼叫那樣產生物件拷貝,這可以提高效能;二就是具有傳指標呼叫的優點(不會產生物件拷貝),又沒有傳指標呼叫的缺點(有時指標指向null,所以必須加以檢測,要不然就會導致嚴重錯誤);三就是通過引用把變數傳入函式中,在函式中可以直接修改這個變數的值,這點也是需要用到傳指標呼叫的原因之一。 例程:

void incremental(int& i) //這個函式把乙個int型的變數遞增1

int k = 10;

incremental(k); //執行完這句後,k=11, 想想為什麼

問題3解答:

if、else是條件分支語句,while是迴圈語句,bool是一種變數型別,這種型別的變數只能取true、false兩個值,也即我們平常所說的是/否(對/錯、成功/失敗等等),這些都是基礎東西,看來你現在不應該學c++,而應該先學c,因為c中沒有物件、引用、虛函式等難懂的東西,只有結構化程式設計所必須的東西,因為無論是物件導向啊、抽象設計啊等等多麼高階的東西,最基礎的內部實現都離不開結構化的程式設計,結構化程式設計是讓我們以計算機的思維去思考問題,而物件導向、抽象設計是讓計算機以我們的思維方式去解決問題,所以先要熟悉計算機的思維方式,才能讓它來摸擬我們的思維方式,先打好基礎,再向高階進軍就不會那麼吃力了,這是我給你的建議。

問題解答4:

你的問題描述的不是太清楚,所以我也無法解答,最好是把你的**也貼出來,並作詳細的注釋,我才能幫你分析問題出在**。

2樓:匿名使用者

1.void型別函式就是無返回值的函式,那麼在它內部的return語句後面不能跟引數,只能是return;就是說明函式執行到此就結束返回到呼叫處,此時也可以沒有return語句表示函式執行到結尾才結束返回到呼叫處.

當函式不是void型別時,例int fun() 那麼此函式中必須有return語句返回與函式型別相同(如果不同會進行型別轉換,轉換成函式型別,如果轉換失敗就會出錯)的乙個值,例如前面的定義,可有return 1;這樣當執行到這裡時函式結束並返回1的值,呼叫些函式時通常是這樣的a=fun();這樣如果在return 1;這裡返回的那麼a==1了.乙個函式裡可以有多個return語句,但只能執行一次,就是程式最先執行到的(最先執行到的不一定是寫在最前面的,指的是實際執行中最先執行的)那個.函式中迴圈與外面的迴圈是一樣的,對於你說的數值會不會變化指的是變數的值吧,那就看你在迴圈裡是否改變了變數的值.

如果你是說傳入的引數在下面說明.

2.傳值函式就是將引數的數值作為引數傳入函式,例fun(int a)呼叫時int b=3;fun(b);此時只將b的值傳入了函式fun,就是說b==3但此時的b與a並不是同一變數它們儲存在記憶體的不同空間,也就是在函式內部改變a的值b是不會變的.對於引用是將變數本身傳入函式(包括變數的空間).

例fun(int &c)這樣在呼叫時int b=3;fun(b);此時與c就是同乙個變數c==3(它們在記憶體中的空間是一樣的)只是不同名,如果在函式內部對c的值進行更改那麼函式外面的b的值也就同樣更改了.還有一種就傳位址我都寫上吧,此時只是將變數在記憶體的位址傳入(注意與引用的區別),例如fun(int * d)呼叫時int b=3;fun(&b);注意此處的&與函式宣告時的&引用的不同,此處表示取位址運算,&b結果就是變數b的位址,呼叫後就將b的位址傳給了形參d(是乙個指向int型指標)d中儲存著b的位址,此時如果單純改變d的值只表示d中儲存的位址變了,也就是說不在是b的位址了.若要改變b我們一般用的是(*d),表示取d中儲存著的記憶體位址所指向的記憶體(注意區分d本身的儲存空間與它所指向的儲存空間的區別)空間的資料.

3.boolean語句就是能判斷真假的語句(就是高中學的命題,有點像,呵呵)它的結果要麼是真(成立或都說條件滿足)要麼是假(不成立或者說條件不滿足),也就是bool型結果(如果型別不是bool就會進行型別轉換,因為我們多見是形如 int a=3;if(a),此時就是先將a的值3轉換成bool型true然後再運算,此時也相當於if((bool)a==true)).

4.要用迴圈一定要注意迴圈是如何結束的,如果沒有結束的條件(或者說條件不會發生)就會產生死迴圈.

此題中a,b,c都要為正,不滿足就得迴圈,這是迴圈(進入迴圈)的條件(a<=0 |b<=0 |c<=0)所以此種情況一般是先給a,b,c乙個能進入迴圈(滿足進入迴圈條件)的值,例如a=-1,b=0,c=1;(當然只有乙個a=-1;就夠了)可寫成

a=-1;

while(a<=0 | b<=0 |c<=0)

退出迴圈條件當然就是(a<=0 |b<=0 |c<=0)不滿足了,這個迴圈是可以結束的

迴圈要做的事:重新輸入a,b,c

寫成了a=-1;

while(a<=0 | b<=0 |c<=0)

最後是滿足了全為正的條件,就是退出迴圈了

然後是要判斷是否滿足第二個條件,如果滿足輸出提示

寫成a=-1;

while(a<=0 | b<=0 |c<=0)

if(a+b>c&&b+c>a&&a+c>b)

這樣你要的功能就完成了.

呵呵,僅供參考!

3樓:匿名使用者

1 void是空函式,也就是不能被呼叫。其應用主要是主函式即main時。return是為了得到一解決方法或演算法而使用返回值型別。通常含return語句的函式會主函式中被呼叫;

2 if else都是比較簡單常用的基本語句建議你多看書本.bool是一種型別稱為布林型別只有兩個值true 和 falseboolean語句就是能判斷真假的語句(就是高中學的命題,有點像,呵呵)它的結果要麼是真(成立或都說條件滿足)要麼是假(不成立或者說條件不滿足),也就是bool型結果(如果型別不是bool就會進行型別轉換,因為我們多見是形如 int a=3;if(a),此時就是先將a的值3轉換成bool型true然後再運算,此時也相當於if((bool)a==true));

3 傳值函式就是將引數的數值作為引數傳入函式,例fun(int a)呼叫時int b=3;fun(b);此時只將b的值傳入了函式fun,就是說b==3但此時的b與a並不是同一變數它們儲存在記憶體的不同空間,也就是在函式內部改變a的值b是不會變的.對於引用是將變數本身傳入函式(包括變數的空間).例fun(int &c)這樣在呼叫時int b=3;fun(b);此時與c就是同乙個變數c==3(它們在記憶體中的空間是一樣的)只是不同名,如果在函式內部對c的值進行更改那麼函式外面的b的值也就同樣更改了.

還有一種就傳位址我都寫上吧,此時只是將變數在記憶體的位址傳入(注意與引用的區別);

4a,b,c都要為正所以此種情況一般是先給a,b,c乙個能進入迴圈的值,例如a=-1,b=0,c=1;(當然只有乙個a=-1;就夠了)可寫成

a=-1;

while(a<=0 | b<=0 |c<=0)

退出迴圈條件當然就是(a<=0 |b<=0 |c<=0)不滿足了,這個迴圈是可以結束的

迴圈要做的事:重新輸入a,b,c

寫成了a=-1;

while(a<=0 | b<=0 |c<=0)

最後是滿足了全為正的條件,就是退出迴圈了

然後是要判斷是否滿足第二個條件,如果滿足輸出提示

寫成a=-1;

while(a<=0 | b<=0 |c<=0)

if(a+b>=0&&b+c>=0)

4樓:匿名使用者

1.void函式表示無返回值函式,是指這個函式的型別。如果用到return必須函式型別不為void。

函式定義的時候就有格式。如 型別名 函式名(引數型別 引數名。。。。。)函式中套用迴圈,當然會變,他每次還回值也不一定相同。。。

2.引用就相當於把這個函式引數起了乙個小名,就像人有大名和小名一樣,其實只是相同的。

3.if else while....都是幾大語句中的,你看可以看看c++書有詳細介紹。

bool是一種型別稱為布林型別只有兩個值true 和 false和但是不能用1,0 替代。。。

4.loop就是乙個變數作為判斷條件,如果是要輸入loop值得話,肯定是當loop大於0執行迴圈,否則不執行迴圈。。。

c++函式引數直接傳值和引用傳值的問題

5樓:鬼武白龍

傳值就是把 a的值給x,b的值給y,但是a和x,b和y是不同的變數,占用不同的儲存空間;

傳引用就是建立了a和x,b和y之間的連線,相當於給a取了乙個外號叫x,給b取了乙個外號叫y,占用的是同乙個儲存空間。

推薦書籍:

c++primer

c專家程式設計

thinking in c++

建議你以後不要再問這種問題了,多看書。

誰能給我講講關於Backstreet boy的,越詳細越好

成員 kevin howie d brian a.j nick 五個才華洋溢的少年,不僅舞跳得好 長相俊美 更重要的是他們個個是充滿 天分的奇才。1994年初成軍時仍只是初生之犢不畏虎的小毛頭,一年之後,他們已躍登世界舞臺,成為眾所矚目的新偶像,他們就是 新好男孩 新好男孩 的五個成員中,kevin...

誰能給我講講夢幻30 60之間該做的事

首先 你有沒有拜師呢 拜師了的話做師徒 50估計很快 公升級不是問題 40之後可以組隊燒雙捉鬼都可以 50之後捉鬼 做wjfb 還有就是師門 一定每天20個 錢可以去打寶圖 在9的店小二那裡接 一天200次 我以前30級就去打 公升級就是每天師門和師徒 我一天30到40張寶圖 有的時候還更多 新區的...

誰能給我講講據說由和氏璧造成的那個傳國玉璽的事情,以及現在在何處儲存

西元前228年,秦滅趙,和氏璧最終還是落入秦國手中,不幸的是,和氏璧從此從歷史記載中消失了。傳說中秦始皇統一六國後,將和氏璧製成了傳國玉璽。姑且不論傳國玉璽是否是用和氏璧琢製的,秦始皇統一中國後,確實曾令玉工雕琢過一枚皇帝玉璽,稱之為 天子璽 據史書記載,此璽用陝西藍田白玉雕琢而成,螭虎鈕,一說龍魚...