日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

C++函数概念解析(2)

發(fā)布時(shí)間:2023/12/2 c/c++ 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++函数概念解析(2) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
數(shù)組形參

我們?yōu)楹瘮?shù)傳遞一個(gè)數(shù)組時(shí),實(shí)際傳遞的是這個(gè)數(shù)組的指針

void print(const int*); void print(const int[]);//函數(shù)的意圖是作用于一個(gè)數(shù)組 void print(const int[10]);

以數(shù)組作為形參的函數(shù)也必須保證這個(gè)數(shù)組不越界

使用標(biāo)記指定數(shù)組長(zhǎng)度

以C風(fēng)格字符串為例,函數(shù)在遇到空字符時(shí)停止

void print(const char*cp) {if(cp)while(*cp)cout<<*p++; }

適合有明顯結(jié)束標(biāo)記且數(shù)據(jù)類型不容易混淆,比如一段文章的結(jié)尾

使用標(biāo)準(zhǔn)庫(kù)規(guī)范

傳遞數(shù)組首元素指針與尾元素指針也是一種管理數(shù)組形參的方法

void print(const int*beg,const int*end) {while(beg!=end)cout<<*beg++<<endl; }//輸出beg與end之間所有的元素

調(diào)用如下:

int j[2]={0,1}; print(begin(j),end(j));

第三種方法是專門定義一個(gè)表示數(shù)組大小的形參

void print(const int ia[],size_t size)//記錄大小的數(shù)據(jù)類型 {for(size_t i=0;i!=size;++i)//size_t就是專門記錄數(shù)據(jù)大小的數(shù)據(jù){cout<<ia[i]<<endl;} }

調(diào)用print函數(shù)時(shí)

int j[]={0,1};print(j,end(j)-begin(j))
C++中沒(méi)有真正的多維數(shù)組

C++ 里面更嚴(yán)格來(lái)說(shuō)其實(shí)只有數(shù)組的數(shù)組(又稱jagged array),這是為什么呢?在MSDN的第CA1814號(hào)文件中找到了答案:

In a multidimensional array, each element in each dimension has the same, fixed size as the other elements in that dimension. In a jagged array, which is an array of arrays, each inner array can be of a different size. By only using the space that’s needed for a given array, no space is wasted.

翻譯過(guò)來(lái)就是:
在多維數(shù)組中,每個(gè)維度中的每個(gè)元素與該維度中的其他元素具有相同的固定大小。在一個(gè)鋸齒狀數(shù)組(即數(shù)組的數(shù)組)中,每個(gè)內(nèi)部數(shù)組可以具有不同的大小。通過(guò)只使用給定數(shù)組所需的空間,不會(huì)浪費(fèi)任何空間。

C#與VB是真正支持多維數(shù)組的

main()函數(shù)

之前我們的main()函數(shù)基本為空,有時(shí)候確實(shí)需要給main()函數(shù)傳遞形參

int main(int argc,chat *argc[])

第一個(gè)形參表示的是數(shù)組中字符串的數(shù)量
第二個(gè)形參argv是一個(gè)數(shù)組,它的元素是指向C風(fēng)格的字符串的指針

復(fù)習(xí)一下形參的作用:

它可以看成引用對(duì)象的另一個(gè)名字,不額外占用空間,效率高

在使用argv中的實(shí)參的時(shí)候,從argv[1]開(kāi)始,argv[0]是給保存程序的名字

無(wú)法預(yù)知有多少個(gè)實(shí)參的時(shí)候

initializer_list形參

void error_msg(initializer_list<string> il) {for(auto beg=i1.begin();beg!=i1.end();++beg)cout<<*beg<<" ";cout<<endl; }

省略符形參

void foo(parm_list,...); void foo(...);
函數(shù)的返回值

每個(gè)函數(shù)都必須有一個(gè)返回值嗎?答案是否定的

  • 沒(méi)有return語(yǔ)句的函數(shù)只能用在返回類型是void的函數(shù)中,返回void的函數(shù)可以不要return函數(shù)
  • 只要函數(shù)的返回類型不是void,函數(shù)就必須有一個(gè)返回值,如果沒(méi)有返回值,可能導(dǎo)致控制流尚未返回任何值就結(jié)束了函數(shù)的執(zhí)行,編譯器也無(wú)法檢查出這一錯(cuò)誤
  • 不要返回局部對(duì)象引用或者指針,因?yàn)楹瘮?shù)完成后,他們的存儲(chǔ)空間也隨之釋放掉
  • 這條規(guī)矩有一個(gè)例外,我們?cè)试Smain()函數(shù)沒(méi)有return語(yǔ)句
  • 左值與右值

    一些語(yǔ)言使用左值(l-value)和右值(r-value)的概念。左值具有確定的、可以被獲得的內(nèi)存地址。這意味著左值可以是變量,也可以是對(duì)指向特定內(nèi)存地址的指針解引用(dereference)的結(jié)果。例如C語(yǔ)言的表達(dá)式(4 + 9),在執(zhí)行時(shí),計(jì)算機(jī)生成一個(gè)整數(shù)值13,但因?yàn)槌绦驔](méi)有明確指定這個(gè)13如何在計(jì)算機(jī)中存儲(chǔ),所以這個(gè)表達(dá)式產(chǎn)生一個(gè)右值。另一方面,如果一個(gè)C程序聲明了一個(gè)變量x并將x賦值為13,那么表達(dá)式(x)的值是13,并且是一個(gè)左值

    調(diào)用一個(gè)返回引用的函數(shù)得到左值,其他返回類型得到右值

    特別的,我們能為返回類型是非常量引用的函數(shù)的結(jié)果賦值

    列表初始化返回值

    函數(shù)可以返回花括號(hào)包圍的值的列表,函數(shù)不能返回?cái)?shù)組,但可以返回?cái)?shù)組的指針

    總結(jié)

    以上是生活随笔為你收集整理的C++函数概念解析(2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。