c語言規定,函式返回值的型別由什麼決定

時間 2021-09-05 11:54:52

1樓:我來跟你談談情

c語言規定,函式返回值的型別是由函式首部定義的型別決定。函式返回值應與首部定義的型別一致,如若不一致,則自動將返回值強制轉換為函式首部定義的型別。沒有定義型別時預設為int型。

也就是說你的函式是什麼型別,返回值就是什麼型別。

比如:函式定義 int fun(int a,char b)

返回值就是整型

函式定義 int *fun(int a)

返回值就是基型別為整型的指標

函式定義 void fun(int a)

無返回值

擴充套件資料

函式可以有返回值,只要 return 就可以給出一個,不過常常不用它,有兩個原因:

1、c/c++裡返回值是複製出去的,而對於大的物件,複製的代價很高;

2、有些物件是不能複製的,至少編譯器不知道怎麼複製,比如陣列。

於是有了下面這樣的函式:

bool getobj(objtype& obj);

bool encode(const char* src, char* dest);

用一個引數來代替返回值,而返回值只是指示函式執行是否成功。

返回一個大物件是困難的,但這個困難存在於 c 程式中,而不是 c++ 程式中。 c 函式裡較少通過返回一個指標來返回物件,因為:

1、如果指標指向棧變數,毫無疑問,要麼不用這個返回值,要麼是一個錯誤;

2、如果指標指向堆變數,需要用這個函式的程式設計師會好好的看文件且足夠細心會呼叫 free,要麼就是記憶體洩漏;

3、如果指標指向 static 變數,那麼用這個函式的程式設計師牢牢記住「下次呼叫這個函式以後,上次的返回值也會跟著變」。

在c++裡直接返回裸指標的話,情況並不會有什麼起色,不過 c++ 有智慧指標的,通常它們指向堆變數,佔用的空間和裸指標一樣大。考慮前面第一個函式,寫成:

std::auto_ptrgetobj();

返回值如果不要,作為臨時變數,會立即被析構,返回的物件被釋放;如果需要,就得賦值給另一個智慧指標。總之不用程式設計師記得,編譯器會保證這個物件的釋放。

考慮第二個函式,稍微有一點麻煩,因為 auto_ptr 是不能用來持有陣列的,不過,在c++的世界裡,std::string 幾乎總是比 char* 好用:

std::auto_ptrencode(const char* src);

最後考慮最麻煩的情況:

bool assembleobjlist(objtype objlist, size_t length);

2樓:匿名使用者

由函式首部定義的型別決定。函式返回值應與首部定義的型別一致,如若不一致,則自動將返回值強制轉換為函式首部定義的型別。沒有定義型別時預設為int型。

3樓:

是由你定義函式時所定義的函式的型別決定的。

也就是說你的函式是什麼型別,返回值就是什麼型別。

比如:函式定義 int fun(int a,char b)返回值就是整型

函式定義 int *fun(int a)返回值就是基型別為整型的指標

函式定義 void fun(int a)無返回值

4樓:匿名使用者

是由你在main函式前面或裡面定義的函式型別所決定的。

比如你在main函式裡定義了float fu(int a)函式,那麼呼叫輸出時就是float型別。

5樓:吉喆嚞

由你希望在函式中得到的資料的型別來決定啊!

6樓:

預設返回值為int可省略

c語言中函式返回值的型別是由() 決定?為什麼選a,而不選b?

7樓:匿名使用者

比如一個求最大值函式定義的時候我這樣定義

int max(float a, float b)假如我給引數 a = 2.6 b = 2.8那麼larger = 2.8

但是函式的返回值型別看的只能是函式型別, 這樣最後返回的只是2而已 , 儘管larger是2.8, 由於函式max的型別是int , 被強制截斷成了2

題目四個選項裡面只有a是看函式型別。所以其他都不對

c語言規定,函式返回值的型別是由( )。 a. return語句中的表示式型別所決定 b. 呼叫該函式時的主調函式類

8樓:匿名使用者

當然是由函式決定的啊:

比如宣告一個函式

int prot(int *, int);

那麼這個函式的返回值int型返回值。

可以寫成return xx -->xx是int型,如果這裡你寫成其它型的(如a說的),編譯會報錯

再就是函式宣告寫成prot(int *, int), //不給他宣告返回型別。

pc機會隱式的讓返回值為int型,如果你return 0.32, 返回去的值其實是0.

9樓:江偉

函式形式為:型別說明符 函式名()

其實函式返回值的型別是由 型別說明符 所確定的型別決定的

(你的選項沒貼全吧)

10樓:

應該是有定義的時候決定的!

11樓:

看了你的補充,答案不變,選b

決定權是b,也就是函式原型或者首次宣告函式指標時決定的。

如果你給一個其他於此的型別的返回值作為return的引數,編譯器在編譯過程中會告訴你這個錯誤(如果能自動轉換可能會告訴你警告,不同的編譯器處理方式不同)。

答a(絕對錯誤)的我不知道有沒有學過c語言,這個返回值不能當作函式出口,函式原型才是函式出口和入口的說明,如果return能夠決定返回型別的話,你想想看,使用if-elseif-else語句或者switch是不是一個函式可以返回多個型別的返回值了?呢這個世界還不亂套了???

在c語言中,函式返回值的資料型別取決於什麼?

12樓:亢瑾瑜千淑

c:在定義函式時所指定的資料型別

例如:int

fun();//這個函式的返回值就必須是個整型的值再如struct

*fun()//那他就必須返回一個結構體指標

13樓:衷陣符鶯

選擇c,函bai數返回

值的型別和du函式名師沒有

zhi關係的,函式dao名只是個簡單的代號回,沒有什麼特殊答的意義,return

語句中表示式的資料型別必須和

定義函式是所指定的資料型別一樣才可以,否則會出錯。至於主調函式,強調一下。

主調函式一般都是void

也就是空型的,沒有什麼特殊用處,也只是為了保持函式格式的一致。

14樓:左手煙雨

程式 從main函式開始執行;

函式返回值的型別取決於函式的型別,函式定義是什麼型別,返回值會被強制轉化為函式的型別。

例如:int f();的返回值是int, float f();的返回值是float

15樓:于于祥祥

取決於你的需求,若你需要整形就設為 int 函式名(引數),其它一樣

從main()函式開始的都是

16樓:匿名使用者

是由你定義函來數時所定源

義的函式的型別決定的。

也就bai

是說你du的函式是什麼類zhi型,返回值就是什麼dao型別。

比如:函式定義 int fun(int a,char b)返回值就是整型

函式定義 int *fun(int a)返回值就是基型別為整型的指標

函式定義 void fun(int a)無返回值

17樓:匿名使用者

main()函式是整個程式的入口啊

返回型別其他人說的很清楚了

你還是去弄本書看吧,看完了就不會問這麼無聊的問題了

C 函式返回型別是引用的問題,C 函式返回值為引用型別時出錯!大神進!

引用就是變數的別名,返回c3的引用,返回的就是c3 c3被清除,再呼叫c3的函式,結果當然不正確 如果返回 i 後,i被清除,但是返回值已經被輸出了,結果是正確的 返回c型別,g函式返回 的是c型別的一個物件,雖然c3被清除,但是返回的物件還能呼叫get函式 你可以在c類中增加一個解構函式,除錯執行...

c語言中,函式返回值怎麼用,c語言中呼叫函式如何返回多個值?

斑駁丶4129仉 一般用0表示函式執行正確,正常返回 用負數表示函式執行出錯,每個值可以提前定義,根據出錯的值進行出錯處理。誠心為您解答每一個問題!如您滿意請採納最佳!如有疑問請繼續追問!您的好評是我們前進的動力,相互幫助,一起進步! return後接一個值。在呼叫這個函式的函式裡面,呼叫它的時候希...

c語言返回值具體是指什麼,C語言中返回值是什麼意思?有什麼用?

返回值可以是包括指標在內的任何型別,一般跟所定義的函式型別一致,如果沒有返回值,函式型別應為void 比如一個計算一個數的絕對值的函式 返回值就是將這個數的絕對值返回的 返回值的作用就是返回一個值 c語言中返回值是什麼意思?有什麼用?5 說來話長。c語言中,首先,返回值是函式的返回值 然後,函式的函...