色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c語言中規定函數的返回值的類型有什么

錢斌斌2年前23瀏覽0評論

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 Enwxxxcode-style(const char* src, char* dest);

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

返回一個大對象是困難的,但這個困難存在于 C 程序中,而不是 C++ 程序中。 C 函數里較少通過返回一個指針來返回對象,因為:

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

2、如果指針指向堆變量,需要用這個函數的程序員會好好的看文檔且足夠細心會調用 free,要么就是內存泄漏;

3、如果指針指向 static 變量,那么用這個函數的程序員牢牢記住“下次調用這個函數以后,上次的返回值也會跟著變”。

在C++里直接返回裸指針的話,情況并不會有什么起色,不過 C++ 有智能指針的,通常它們指向堆變量,占用的空間和裸指針一樣大。考慮前面第一個函數,寫成:

std::auto_ptr

GetObj();

返回值如果不要,作為臨時變量,會立即被析構,返回的對象被釋放;如果需要,就得賦值給另一個智能指針。總之不用程序員記得,編譯器會保證這個對象的釋放。

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

std::auto_ptr<std::string> Enwxxxcode-style(const char* src);

最后考慮最麻煩的情況:

bool AssembleObjList(ObjType objList[], size_t length);