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語言中,首先,返回值是函式的返回值 然後,函式的函...