本文目錄一覽:
- 1、在C語言中,函數返回的數據類型取決於
- 2、“C語言中,函數返回值的類型是由定義函數時所指定的函數類型決定的”這句話對嗎?
- 3、C語言規定,函數返回值的類型是由( )。 A. return語句中的表達式類型所決定 B. 調用該函數時的主調函數類
- 4、決定C語言中函數返回值類型的是【 】
- 5、c語言 一個函數返回值的類型取決於( )
- 6、C語言規定,函數返回值的類型由什麼決定?
在C語言中,函數返回的數據類型取決於
選擇C,函數返回值的類型和函數名師沒有關係的,函數名只是個簡單的代號,沒有什麼特殊的意義,return 語句中表達式的數據類型必須和 定義函數是所指定的數據類型一樣才可以,否則會出錯。至於主調函數,強調一下。 主調函數一般都是void 也就是空型的,沒有什麼特殊用處,也只是為了保持函數格式的一致。
“C語言中,函數返回值的類型是由定義函數時所指定的函數類型決定的”這句話對嗎?
int
afun()//函數定義,int
表示函數定義的類型
{
long
a;
int
b;
//如果返回是這樣,return
a;
錯誤,因為返回值的類型與定義的類型不一致
//如果返回是這樣,return
b;
正確,因為返回值的類型與定義的類型一致
}
,所以,函數返回值的類型是由定義該函數時所指定的函數定義類型決定的!
C語言規定,函數返回值的類型是由( )。 A. return語句中的表達式類型所決定 B. 調用該函數時的主調函數類
當然是由函數決定的啊:
比如聲明一個函數
int prot(int *, int);
那麼這個函數的返回值int型返回值。
可以寫成return XX –XX是int型,如果這裡你寫成其它型的(如A說的),編譯會報錯
再就是函數聲明寫成prot(int *, int), //不給他聲明返回類型。
PC機會隱式的讓返回值為int型,如果你return 0.32, 返回去的值其實是0.
決定C語言中函數返回值類型的是【 】
決定C語言中函數返回值類型的是定義函數時在函數首部所指定的類型。
在C語言中,一個標準的函數定義語句塊必須包含函數返回值的類型標識符、函數名、形參類型及數量、函數體、返回值表達式。如果函數返回值類型為
void
(即無返回值)。
函數定義示例(其中int是函數返回值類型):
int
fun(int
a,
int
b){
return
ab
?
a
:
b;
}
擴展資料
C語言函數類型種類舉例介紹:
1、void
空類型,表示該函數無返回值;
2、int
整形,表示該函數返回int整形數值;
3、double
雙精度,函數返回雙精度數值;
4、char
字元串,函數返回字元串;
5、long
長整型,函數返回長整型數值;
c語言 一個函數返回值的類型取決於( )
顯然是選擇A.定義函數時制定或預設的函數類型,如果不指定,預設是int型。
C語言規定,函數返回值的類型由什麼決定?
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_ptrObjType GetObj();
返回值如果不要,作為臨時變數,會立即被析構,返回的對象被釋放;如果需要,就得賦值給另一個智能指針。總之不用程序員記得,編譯器會保證這個對象的釋放。
考慮第二個函數,稍微有一點麻煩,因為 auto_ptr 是不能用來持有數組的,不過,在C++的世界裡,std::string 幾乎總是比 char* 好用:
std::auto_ptrstd::string Encode(const char* src);
最後考慮最麻煩的情況:
bool AssembleObjList(ObjType objList[], size_t length);
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/290711.html