




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
函數(shù)是一組一起執(zhí)行一個任務(wù)的語句。每個C++程序都至少有一個函數(shù),即主函數(shù)main(),所有簡單的程序都可以定義其他額外的函數(shù)。您可以把代碼劃分到不同的函數(shù)中。如何劃分代碼到不同的函數(shù)中是由您來決定的,但在邏輯上,劃分通常是根據(jù)每個函數(shù)執(zhí)行一個特定的任務(wù)來進展的。函數(shù)聲明告訴編譯器函數(shù)的名稱、返回類型和參數(shù)。函數(shù)定義提供了函數(shù)的實際主體。C++標(biāo)準(zhǔn)庫提供了大量的程序可以調(diào)用的置函數(shù)。例如,函數(shù)StrCat()用來連接兩個字符串,函數(shù)memcpy()用來復(fù)制存到另一個位置。函數(shù)還有很多叫法,比方方法、子例程或程序,等等。定義函數(shù)C++中的函數(shù)定義的一般形式如下:return_typefunction_name(Parameterlist){bodyofthefunction}在C++中,函數(shù)由一個函數(shù)頭和一個函數(shù)主體組成。下面列出一個函數(shù)的所有組成局部:返回類型:一個函數(shù)可以返回一個值。return_type是函數(shù)返回的值的數(shù)據(jù)類型。有些函數(shù)執(zhí)行所需的操作而不返回值,在這種情況下,return_type是關(guān)鍵字void。函數(shù)名稱:這是函數(shù)的實際名稱。函數(shù)名和參數(shù)列表一起構(gòu)成了函數(shù)簽名。參數(shù):參數(shù)就像是占位符。當(dāng)函數(shù)被調(diào)用時,您向參數(shù)傳遞一個值,這個值被稱為實際參數(shù)。參數(shù)列表包括函數(shù)參數(shù)的類型、順序、數(shù)量。參數(shù)是可選的,也就是說,函數(shù)可能不包含參數(shù)。函數(shù)主體:函數(shù)主體包含一組定義函數(shù)執(zhí)行任務(wù)的語句。實例以下是ma*()函數(shù)的源代碼。該函數(shù)有兩個參數(shù)num1和num2,會返回這兩個數(shù)中較大的那個數(shù)://函數(shù)返回兩個數(shù)中較大的那個數(shù)intma*(intnum1,intnum2){//局部變量聲明intresult;if(num1>num2)result=num1;elseresult=num2;returnresult;}函數(shù)聲明函數(shù)聲明會告訴編譯器函數(shù)名稱及如何調(diào)用函數(shù)。函數(shù)的實際主體可以單獨定義。函數(shù)聲明包括以下幾個局部:return_typefunction_name(parameterlist);針對上面定義的函數(shù)ma*(),以下是函數(shù)聲明:intma*(intnum1,intnum2);在函數(shù)聲明中,參數(shù)的名稱并不重要,只有參數(shù)的類型是必需的,因此下面也是有效的聲明:intma*(int,int);當(dāng)您在一個源文件中定義函數(shù)且在另一個文件中調(diào)用函數(shù)時,函數(shù)聲明是必需的。在這種情況下,您應(yīng)該在調(diào)用函數(shù)的文件頂部聲明函數(shù)。調(diào)用函數(shù)創(chuàng)立C++函數(shù)時,會定義函數(shù)做什么,然后通過調(diào)用函數(shù)來完成已定義的任務(wù)。當(dāng)程序調(diào)用函數(shù)時,程序控制權(quán)會轉(zhuǎn)移給被調(diào)用的函數(shù)。被調(diào)用的函數(shù)執(zhí)行已定義的任務(wù),當(dāng)函數(shù)的返回語句被執(zhí)行時,或到達函數(shù)的完畢括號時,會把程序控制權(quán)交還給主程序。調(diào)用函數(shù)時,傳遞所需參數(shù),如果函數(shù)返回一個值,則可以存儲返回值。例如:實例#include<iostream>usingnamespacestd;//函數(shù)聲明intma*(intnum1,intnum2);intmain(){//局部變量聲明inta=100;intb=200;intret;//調(diào)用函數(shù)來獲取最大值ret=ma*(a,b);Cout<<""Ma*valueis:""<<ret<<endl;return0;}//函數(shù)返回兩個數(shù)中較大的那個數(shù)intma*(intnum1,intnum2){//局部變量聲明intresult;if(num1>num2)result=num1;elseresult=num2;returnresult;}把ma*()函數(shù)和main()函數(shù)放一塊,編譯源代碼。當(dāng)運行最后的可執(zhí)行文件時,會產(chǎn)生以下結(jié)果:Ma*valueis:200函數(shù)參數(shù)如果函數(shù)要使用參數(shù),則必須聲明承受參數(shù)值的變量。這些變量稱為函數(shù)的形式參數(shù)。形式參數(shù)就像函數(shù)的其他局部變量,在進入函數(shù)時被創(chuàng)立,退出函數(shù)時被銷毀。傳值調(diào)用 該方法把參數(shù)的實際值復(fù)制給函數(shù)的形式參數(shù)。在這種情況下,修改函數(shù)的形式參數(shù)對實際參數(shù)沒有影響。指針調(diào)用 該方法把參數(shù)的地址復(fù)制給形式參數(shù)。在函數(shù),該地址用于調(diào)用中要用到的實際參數(shù)。這意味著,修改形式參數(shù)會影響實際參數(shù)。引用調(diào)用 該方法把參數(shù)的引用復(fù)制給形式參數(shù)。在函數(shù),該引用用于調(diào)用中要用到的實際參數(shù)。這意I I味著,修改形式參數(shù)會影響實際參數(shù)。默認(rèn)情況下,C++使用傳值調(diào)用來傳遞參數(shù)。一般來說,這意味著函數(shù)的代碼不能改變用于調(diào)用函數(shù)的參數(shù)。之前提到的實例,調(diào)用ma*()函數(shù)時,使用了一樣的方法。參數(shù)的默認(rèn)值當(dāng)您定義一個函數(shù),您可以為參數(shù)列表中后邊的每一個參數(shù)指定默認(rèn)值。當(dāng)調(diào)用函數(shù)時,如果實際參數(shù)的值留空,則使用這個默認(rèn)值。這是通過在函數(shù)定義中使用賦值運算符來為參數(shù)賦值的。調(diào)用函數(shù)時,如果未傳遞參數(shù)的值,則會使用默認(rèn)值,如果指定了值,則會忽略默認(rèn)值,使用傳遞的值。請看下面的實例:實例#include<iostream>usingnamespacestd;intsum(inta,intb=20){intresult;result=a+b;return(result);}intmain(){//局部變量聲明inta=100;intb=200;intresult;//調(diào)用函數(shù)來添加值result=sum(a,b);Cout<<""TotalValueis:""<<result<<endl;//再次調(diào)用函數(shù)result=sum(a);Cout<<"Totalvalueis:""<<result<<endl;return0;}當(dāng)上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生以下結(jié)果:Totalvalueis:300Totalvalueis:120Lambda函數(shù)與表達式C++11提供了對匿名函數(shù)的支持,稱為Lambda函數(shù)(也叫Lambda表達式)。Lambda表達式把函數(shù)看作對象。Lambda表達式可以像對象一樣使用,比方可以將它們賦給變量和作為參數(shù)傳遞,還可以像函數(shù)一樣對其求值。Lambda表達式本質(zhì)上與函數(shù)聲明非常類似。Lambda表達式具體形式如下:[capture](parameters)->return-type{body}例如:[](int*,inty){return*<y;}如果沒有返回值可以表示為:[capture](parameters){body}例如:[]{++global_*;}在一個更為復(fù)雜的例子中,返回類型可以被明確的指定如下:[](int*,inty)->int{intZ=*+y;returnZ+*;}本例中,一個臨時的參數(shù)z被創(chuàng)立用來存儲中間結(jié)果。如同一般的函數(shù),z的值不會保存到下一次該不具名函數(shù)再次被調(diào)用時。如果lambda函數(shù)沒有傳回值(例如void),其返回類型可被完全忽略。在Lambda表達式可以當(dāng)前作用域的變量,這是Lambda表達式的閉包(Closure)行為。與JaVaScriPt閉包不同,C++變量傳遞有傳值和傳引用的區(qū)別??梢酝ㄟ^前面的口來指定:[]//沒有定義任何變量。使用未定義變量會引發(fā)錯誤。[*,&y]//*以傳值方式傳入(默認(rèn)),y以引用方式傳入。[&]//任何被使用到的外部變量都隱式地以引用方式加以引用。[=]//任何被使用到的外部變量都隱式地以傳值方式加以引用。[&,*]//*顯式地以傳值方式加以引用。其余變量以引用方式加以引用。[=,&z]//Z顯式地以引用方式加以引用。其余變量以傳值方式加以引用。另外有一點需要注意。對于[=]或[&]的形式,lambda表達式可以直接使用this指針。但是,對于口的形式,如果要使用thic++必須數(shù)組C++支持?jǐn)?shù)組數(shù)據(jù)構(gòu)造,它可以存儲一個固定大小的一樣類型元素的順序集合。數(shù)組是用來存儲一系列數(shù)據(jù),但它往往被認(rèn)為是一系列一樣類型的變量。數(shù)組的聲明并不是聲明一個個單獨的變量,比方number。、numberl、...、number99,而是聲明一個數(shù)組變量,比方numbers,然后使用numbers[。]、numbers[1]、...、numbers[99]來代表一個個單獨的變量。數(shù)組中的特定元素可以通過索引。所有的數(shù)組都是由連續(xù)的存位置組成。最低的地址對應(yīng)第一個元素,最高的地址對應(yīng)最后一個元素。聲明數(shù)組在C++中要聲明一個數(shù)組,需要指定元素的類型和元素的數(shù)量,如下所示:typearrayName[arraySize];這叫做一維數(shù)組。arraySize必須是一個大于零的整數(shù)常量,type可以是任意有效的C++數(shù)據(jù)類型。例如,要聲明一個類型為double的包含10個元素的數(shù)組balance,聲明語句如下:doublebalance[10];現(xiàn)在balance是一個可用的數(shù)組,可以容納10個類型為double的數(shù)字。初始化數(shù)組在C++中,您可以逐個初始化數(shù)組,也可以使用一個初始化語句,如下所示:doublebalance[5]={1000.0,2.0,3.4,7.0,50.0};大括號{}之間的值的數(shù)目不能大于我們在數(shù)組聲明時在方括號[]中指定的元素數(shù)目。如果您省略掉了數(shù)組的大小,數(shù)組的大小則為初始化時元素的個數(shù)。因此,如果:doublebalance[]={1000.0,2.0,3.4,7.0,50.0};您將創(chuàng)立一個數(shù)組,它與前一個實例中所創(chuàng)立的數(shù)組是完全一樣的。下面是一個為數(shù)組中*個元素賦值的實例:balance[4]=50.0;上述的語句把數(shù)組中第五個元素的值賦為50.0。所有的數(shù)組都是以0作為它們第一個元素的索引,也被稱為基索引,數(shù)組的最后一個索引是數(shù)組的總大小減去1。以下是上面所討論的數(shù)組的的圖形表示:數(shù)組元素數(shù)組元素可以通過數(shù)組名稱加索引進展。元素的索引是放在方括號,跟在數(shù)組名稱的后邊。例如:doublesalary=balance[9];上面的語句將把數(shù)組中第10個元素的值賦給salary變量。下面的實例使用了上述的三個概念,即,聲明數(shù)組、數(shù)組賦值、數(shù)組:實例#include<iostream>usingnamespacestd;#include<iomanip>usingstd::setw;intmain(){intn[10];//n是一個包含10個整數(shù)的數(shù)組//初始化數(shù)組元素for(inti=0;i<10;i++){n[i]=i+100;//設(shè)置元素i為i+100}cout<<"El^^—9 109C++中數(shù)組詳解在C++中,數(shù)組是非常重要的,我們需要了解更多有關(guān)數(shù)組的細(xì)節(jié)。下面列出了C++程序員必須清楚的一些與數(shù)組相關(guān)的重多維數(shù)組 C++支持多維數(shù)組。多維數(shù)組最簡單的形式是二維數(shù)組。指向數(shù)組的指針 您可以通過指定不帶索引的數(shù)組名稱來生成一個指向數(shù)組中第一個元素的指針。傳遞數(shù)組給函數(shù) 您可以通過指定不帶索引的數(shù)組名稱來給函數(shù)傳遞一個指向數(shù)組的指針。從函數(shù)返回數(shù)組、 C++允許從函數(shù)返回數(shù)組。C++字符串C++提供了以下兩種類型的字符串表示形式:C風(fēng)格字符串C++引入的string類類型C風(fēng)格字符串C風(fēng)格的字符串起源于C語言,并在C++中繼續(xù)得到支持。字符串實際上是使用null字符'\0'終止的一維字符數(shù)組。因此,一個以null結(jié)尾的字符串,包含了組成字符串的字符。下面的聲明和初始化創(chuàng)立了一個“Hello”字符串。由于在數(shù)組的末尾存儲了空字符,所以字符數(shù)組的大小比單詞"Hello”的字符數(shù)多一個。Chargreeting[6]={'H','e','l','l','o',,\0,};依據(jù)數(shù)組初始化規(guī)則,您可以把上面的語句寫成以下語句:Chargreeting[]="Hello";以下是C/C++中定義的字符串的存表示:其實,您不需要把null字符放在字符串常量的末尾。C++編譯器會在初始化數(shù)組時,自動把'\0'放在字符串的末尾。讓我們嘗試輸出上面的字符串:實例#include<iostream>usingnamespacestd;intmain(){chargreeting[6]={'H','e','l','l','o','?0'};CoUt<<“Greetingmessage:";CoUt<<greeting<<endl;return。;}當(dāng)上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生以下結(jié)果:Greetingmessage:HelloC++中有大量的函數(shù)用來操作以null結(jié)尾的字符串:supportsawiderangeoffunctionsthatmanipulatenull-terminastrcpy(s1,s2);復(fù)制字符串s2到字符串s1。strcat(s1,s2);連接字符串s2到字符串si的末尾。StrIen(S1);返回字符串si的長度。4strcmp(si,s2);如果Si和s2是一樣的,則返回0;如果si<s2則返回值小于0;如果si>s2則返回值大于0。strchr(si,ch);返回一個指針,指向字符串Si中字符Ch的第一次出現(xiàn)的位置。strstr(si,s2);返回一個指針,指向字符串Si中字符串s2的第一次出現(xiàn)的位置。下面的實例使用了上述的一些函數(shù):實例#include<iostream>#include<cstring>usingnamespacestd;intmain(){charstri[ii]="Hello";CharStr2[ii]="World”;charstr3[ii];intlen;//復(fù)制stri至Ustr3strcpy(str3,stri);cout<<"strcpy(str3,stri):"<<str3<<endl;//連接stri和str2strcat(stri,str2);cout<<"strcat(stri,str2):"<<stri<<endl;//連接后,stri的總長度len=strlen(stri);cout<<"strlen(stri):"<<len<<endl;return0;}當(dāng)上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生以下結(jié)果:strcpy(str3,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度離職員工保密協(xié)議及競業(yè)限制合同簽訂流程規(guī)范
- 二零二五年度知識產(chǎn)權(quán)保護合伙人合作協(xié)議范本
- 法律實務(wù)案例分析題及法律理論應(yīng)用題卷
- 共享平臺合作協(xié)議知識產(chǎn)權(quán)合作開發(fā)協(xié)議
- 高峰會議交流與合作備忘錄
- 油漆勞務(wù)合同油漆工用工合同
- 基于大數(shù)據(jù)的農(nóng)業(yè)現(xiàn)代化種植管理系統(tǒng)開發(fā)實踐
- 企業(yè)形象策劃及活動推廣合作協(xié)議
- 精紡織品采購合同
- 高一英語動詞時態(tài)對照分析教案
- 2024水利五大員知識題庫及答案
- TCARM 002-2023 康復(fù)醫(yī)院建設(shè)標(biāo)準(zhǔn)
- 部編版一年級語文下冊全冊教案表格(教學(xué)反思二次備課)
- 智能制造概論(高職)全套教學(xué)課件
- 點亮生命-大學(xué)生職業(yè)生涯發(fā)展與就業(yè)指導(dǎo)全套教學(xué)課件
- 特殊作業(yè)現(xiàn)場監(jiān)護人安全培訓(xùn)課件
- 《會計發(fā)展史》課件
- 無人駕駛系統(tǒng)與智能車輛應(yīng)用技術(shù)實訓(xùn)教程
- 幼兒同伴關(guān)系對幼兒社會性發(fā)展的研究開題報告
- 學(xué)校食堂膳食營養(yǎng)培訓(xùn)課件
- 環(huán)境修復(fù)原理與技術(shù)-第5章-污染環(huán)境的植物修復(fù)原理
評論
0/150
提交評論