国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++語(yǔ)言基礎(chǔ)——函數(shù)(詳解)

這篇具有很好參考價(jià)值的文章主要介紹了C++語(yǔ)言基礎(chǔ)——函數(shù)(詳解)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

函數(shù)是什么

函數(shù)的定義

主函數(shù)舉例

?空函數(shù)

函數(shù)的調(diào)用

語(yǔ)法格式

舉例說明:計(jì)算x的n次方

遞歸

遞歸的主要點(diǎn)

遞歸的結(jié)構(gòu)

條件

遞歸使用的場(chǎng)景


函數(shù)是什么

函數(shù)全名叫計(jì)算機(jī)函數(shù),它可以幫助你完成一些特定的程序。你可以把它簡(jiǎn)單理解成一把手槍。

手槍的作用:完成幾發(fā)子彈進(jìn)行射擊的功能

手槍的結(jié)構(gòu):有固定的幾個(gè)部分構(gòu)成

所以,手槍是具有一定格式,可以完成一些特定功能的一件工具,這就是函數(shù)

c++函數(shù),C++,c++,c語(yǔ)言,數(shù)據(jù)結(jié)構(gòu),函數(shù)

函數(shù)的定義

主函數(shù)舉例

int main(){
    cout << "Hello world!\n";
    return 0;
}

由上得,在創(chuàng)建函數(shù)時(shí),必須編寫其定義。所有函數(shù)定義包括以下組成部分:

  • 名稱:每個(gè)函數(shù)都必須有一個(gè)名稱。通常,適用于變量名稱的規(guī)則同樣也適用于函數(shù)名稱。
  • 形參列表:調(diào)用函數(shù)的程序模塊可以向其發(fā)送數(shù)據(jù)。形參列表是保存?zhèn)鬟f給函數(shù)的值的變量列表。如果沒有值傳遞給函數(shù),則其形參列表為空。
  • 主體:函數(shù)的主體是處理函數(shù)正在執(zhí)行的任務(wù)的一組語(yǔ)句。這些語(yǔ)句包含在一組大括號(hào)中。
  • 返回類型:函數(shù)可以將值發(fā)送回調(diào)用它的程序模塊。返回類型是要發(fā)送回的值的數(shù)據(jù)類型。

c++函數(shù),C++,c++,c語(yǔ)言,數(shù)據(jù)結(jié)構(gòu),函數(shù)

?語(yǔ)法格式

返回值類型 函數(shù)名稱 (參數(shù)列表)
{
	 函數(shù)體語(yǔ)句;
	 return 返回值;
}

?空函數(shù)

如前所述,函數(shù)可以返回一個(gè)值。教程中介紹過的所有程序中的 main 函數(shù)都被聲明為向操作系統(tǒng)返回一個(gè) int 值。"return 0;" 語(yǔ)句使得當(dāng) main 函數(shù)完成執(zhí)行時(shí)返回值 0

然而,并不是所有函數(shù)都一定要返回值。某些函數(shù)只需執(zhí)行一個(gè)或多個(gè)語(yǔ)句,然后返回。在 C++中,這樣的函數(shù)稱為空函數(shù),舉個(gè)例子

void shuchu()
{
    cout << "Hello world!\n";
}

?這個(gè)函數(shù)的名稱為shuchu,它的命名方式和變量一樣,函數(shù)應(yīng)該按這種方式命名,即通過名稱揭示其功能。因?yàn)樵摵瘮?shù)不需要接收任何信息以執(zhí)行其任務(wù),所以它的括號(hào)中沒有形參列表

該函數(shù)的返回類型是 void。這意味著函數(shù)在完成執(zhí)行后不返回值,并返回到調(diào)用該程序的部分。因?yàn)闆]有返回值,所以不需要 return 語(yǔ)句。當(dāng)函數(shù)中的語(yǔ)句己經(jīng)完成執(zhí)行并且遇到結(jié)束函數(shù)的封閉大括號(hào)時(shí),程序?qū)?span style="background-color:#ffd900;">自動(dòng)返回

函數(shù)的調(diào)用

功能:使用已定義的函數(shù)

語(yǔ)法格式:

函數(shù)名稱 (參數(shù)列表)

調(diào)用函數(shù)將導(dǎo)致函數(shù)的執(zhí)行。函數(shù) main 在程序啟動(dòng)時(shí)自動(dòng)調(diào)用,但所有其他函數(shù)必須由函數(shù)調(diào)用語(yǔ)句執(zhí)行。當(dāng)一個(gè)函數(shù)被調(diào)用時(shí),程序分支到該函數(shù)并執(zhí)行其主體中的語(yǔ)句。?

舉例說明:計(jì)算x的n次方

#include<stdio.h>
#include<math.h>
double power(double x,int n)
{
  int m;
  m=pow(x,n);
  return m;
}
int main()
{
  double x,y;
  int n;
  scanf("%d%lf",&n,&x);
  y=power(x,n);
  printf("%.2f",y);
  return 0;
}

運(yùn)行結(jié)果:

c++函數(shù),C++,c++,c語(yǔ)言,數(shù)據(jù)結(jié)構(gòu),函數(shù)

在第3行,我們定義了一個(gè)名字叫power的函數(shù),它的實(shí)際作用是求x的n次方,函數(shù)體內(nèi),使用了math庫(kù)里的一個(gè)函數(shù)——pow函數(shù),它的作用就是求x的n次方。在函數(shù)結(jié)束時(shí),返回一個(gè)m的值

與所有 C++ 程序一樣,該程序是從 main 函數(shù)開始執(zhí)行的,其他函數(shù)只有在它們被調(diào)用時(shí)才執(zhí)行。在上面程序中,函數(shù) power 由 main 函數(shù)中的以下語(yǔ)句調(diào)用:

power(x,n);

遞歸

遞歸就是指一段程序直接或者間接調(diào)用自身的一種方法,通過這種形式執(zhí)行需要進(jìn)行一些固定步驟的許多操作,它可以把一個(gè)復(fù)雜并且龐大的問題簡(jiǎn)單化,通過專注于解決它分化出來的小問題從而解決大問題,從而大大減少我們的代碼量,是提高我們編碼效率的很好方法(遞歸就是容易理解,但是內(nèi)存太高,大型考試建議不要用遞歸(除非不得不用,實(shí)在是做不出來))

遞歸的主要點(diǎn)

  • 遞歸函數(shù)的參數(shù)和返回值
  • 終止條件
  • 遞歸的邏輯設(shè)計(jì)

舉個(gè)例子(求階乘):

int factorial(int n){
    if(n==1)
        return n;
    else
        return n*factorial(n-1);
}
int main()
{
    int n;
    cout<<"請(qǐng)輸入整數(shù):"<<endl;
    scanf("%d",&n);
    cout<<"整數(shù):"<<n<<"的階乘為:"<<factorial(n)<<endl;
    cout<<"\n"<<endl;
    return 0;
}

這個(gè)看著不難,不就是個(gè)連乘吧?細(xì)想頭大,就是讓我用計(jì)算器去敲也要半天吧。

但有了遞歸,這個(gè)事情就好說了:

這個(gè)可以看成二個(gè)數(shù)相乘:100×(99×98×97×……×4×3×2×1)

括號(hào)內(nèi)綠色的乘積看作一個(gè)數(shù),簡(jiǎn)單了吧。

如果你還嫌煩,括號(hào)內(nèi)的數(shù)也可以同樣看成二個(gè)數(shù)相乘

99×(98×97×……×4×3×2×1)

你沒有沒發(fā)現(xiàn)點(diǎn)什么?對(duì)的,我們就把一個(gè)相對(duì)復(fù)雜的式子看作一個(gè)整體,不去考慮它具體的值。

大家繼續(xù)思考下,如果上面的括號(hào)里我還是嫌復(fù)雜呢?是不是還可以繼續(xù)分成二個(gè)數(shù)相乘呢?答案是肯定可以的。

那分解到什么時(shí)候可以直接得到答案呢?

對(duì)的,如果分解成2×1,我們就可以輕松解決了。

那么3×(2×1)也就解決了。同理:

4×(3×2×1)也就解決了。同理呢?

大家應(yīng)該能想到5×(4×3×2×1)也解決了,繼續(xù)擴(kuò)大就可以慢慢解決。

100×(99×98×97×……×4×3×2×1)

遞歸的結(jié)構(gòu)

    public void fun(參數(shù)) {
 
    if (終止條件) {
 
    return;
 
    }
 
    fun(參數(shù));
 
    (其他判斷條件或語(yǔ)句);
 
    }

在上邊代碼中,當(dāng)?shù)谝淮芜M(jìn)入函數(shù)時(shí),先判斷是否符合終止條件,符合則直接結(jié)束函數(shù),不符合入下一語(yǔ)句,調(diào)用自己重新進(jìn)入下一層自身函數(shù),(注意這是最外一層將不向下繼續(xù)執(zhí)行語(yǔ)句,外層卡在fun(參數(shù)處)),這個(gè)調(diào)用自己進(jìn)入自身函數(shù)的操作過程即為“遞”的過程。假設(shè)進(jìn)入下一層后符合終止條件,返回結(jié)果,此時(shí)之前進(jìn)入自身函數(shù)執(zhí)行完成返回最外一層函數(shù),最外一層函數(shù)遞歸調(diào)用處得到結(jié)果,(即內(nèi)層函數(shù)執(zhí)行完成得到結(jié)果返回值),這個(gè)過程即為“歸”的過程。這時(shí)最外一層函數(shù)才能繼續(xù)執(zhí)行下一語(yǔ)句,直至函數(shù)運(yùn)行完成。

c++函數(shù),C++,c++,c語(yǔ)言,數(shù)據(jù)結(jié)構(gòu),函數(shù)

條件

遞歸必須具備兩個(gè)條件

  • 一是有邊界,即終止條件。

  • 二是需要調(diào)用自己。

遞歸使用的場(chǎng)景

1.大問題可以拆分為多個(gè)子問題。

2.原問題和拆分后的子問題除了數(shù)據(jù)規(guī)模不同,解決思路完全相同

3.存在遞歸終止條件。

遞歸在線性數(shù)據(jù)結(jié)構(gòu)中使用不太明顯,迭代基本可以很容易地解決問題。

遞歸在非線性結(jié)構(gòu)中非常重要,比如二叉樹,回溯,典型的樹形問題-九宮格字母組合

使用函數(shù)時(shí)常見報(bào)錯(cuò)

1 重定義變量?????????????

Error:redefinition of 'a'

2 ?缺少分號(hào)

Error:expected ';' after expression?

3 數(shù)組維數(shù)錯(cuò)誤

Error:array type 'int [101]' is not assignable

4 ?關(guān)于 if 與 else

Error:expected expression

Warning:?equality comparison result unused [-Wunused-comparison]

if 判斷里不能有分號(hào)!

5 ?關(guān)于 if 與 else

這個(gè)是把等號(hào)寫成了賦值號(hào)

?Warning: using the result of an assignment as a condition without parentheses [-Wparentheses]

這個(gè)特別坑?。?!

6 ?括號(hào)匹配錯(cuò)誤

Error: expected ']'

Error: expected ']'

Error: extraneous closing brace ('}')

7 ?關(guān)于字符串的輸入錯(cuò)誤 (*)

Error:? invalid operands to binary expression ('std::istream' (aka 'basic_istream<char>') and 'char *')
??????? cin>>c+1;
??????? ~~~^ ~~~

Warning: operator '>>' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
??????? cin>>c+1;
?????????? ~~~^~

Note: candidate function template not viable: no known conversion from 'std::istream' (aka 'basic_istream<char>') to 'std::byte' for 1st argument
? operator>> (byte? __lhs, _Integer __shift) noexcept
? ^

8 ?寫錯(cuò)函數(shù) / 變量名

Error:?use of undeclared identifier 'mam'; did you mean 'max'?

少年易老學(xué)難成,一寸光陰不可輕。未覺池塘春草夢(mèng),階前梧葉已秋聲?文章來源地址http://www.zghlxwxcb.cn/news/detail-811345.html

到了這里,關(guān)于C++語(yǔ)言基礎(chǔ)——函數(shù)(詳解)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • c語(yǔ)言基礎(chǔ)知識(shí)幫助理解(詳解函數(shù))

    c語(yǔ)言基礎(chǔ)知識(shí)幫助理解(詳解函數(shù))

    目錄 1. 函數(shù)是什么 2. 庫(kù)函數(shù)? 3. 自定義函數(shù)? 4. 函數(shù)參數(shù)? 4.1實(shí)際參數(shù)(實(shí)參)? 4.2形式參數(shù)(形參)? 5.函數(shù)的調(diào)用 5.1傳值調(diào)用 5.2傳址調(diào)用 (傳遞地址) 6. 函數(shù)的嵌套調(diào)用和鏈?zhǔn)皆L問? 6.1 嵌套調(diào)用? 6.2 鏈?zhǔn)皆L問? 7. 函數(shù)的聲明和定義? 7.1 函數(shù)聲明 ?7.2函數(shù)定義 函數(shù)是

    2024年02月14日
    瀏覽(23)
  • C++在C語(yǔ)言基礎(chǔ)上的優(yōu)化

    C++在C語(yǔ)言基礎(chǔ)上的優(yōu)化

    目錄 一、命名空間 1、命名空間的定義 2、命名空間的使用 二、輸入輸出 三、缺省參數(shù) 1、缺省參數(shù)的概念 2、缺省參數(shù)的分類 四、函數(shù)重載 五、引用 1.引用的概念 2.引用的特性 3、引用和指針的區(qū)別 六、內(nèi)聯(lián)函數(shù) 七、基于范圍的for循環(huán) ? ? ? ? 命名空間用來對(duì)標(biāo)識(shí)符本地

    2024年02月09日
    瀏覽(17)
  • c語(yǔ)言基礎(chǔ)知識(shí)幫助理解(函數(shù)遞歸詳解)

    c語(yǔ)言基礎(chǔ)知識(shí)幫助理解(函數(shù)遞歸詳解)

    \\\"從前有座山,山里有座廟,廟里有個(gè)老和尚和一個(gè)小和尚。有一天老和尚對(duì)小和尚說:“從前有座山.山里有座廟,廟里有個(gè)老和尚和一個(gè)小和尚,有一天老和尚對(duì)小和尚說:“從前有座山.山里有座廟,廟里有個(gè)老和尚和一個(gè)小和尚......\\\" (雖能體現(xiàn)遞歸特點(diǎn),但又不是遞歸)

    2024年02月14日
    瀏覽(29)
  • 【C++ 進(jìn)階】第 1 章:[C 語(yǔ)言基礎(chǔ)] C 語(yǔ)言概述與數(shù)據(jù)類型

    【C++ 進(jìn)階】第 1 章:[C 語(yǔ)言基礎(chǔ)] C 語(yǔ)言概述與數(shù)據(jù)類型

    目錄 一、C 語(yǔ)言的概述? (1)計(jì)算機(jī)結(jié)構(gòu)組成 (2)計(jì)算機(jī)系統(tǒng)組成? (3)ASCII 碼 (4)計(jì)算機(jī)中的數(shù)制及其轉(zhuǎn)換 (5)程序與指令? (6)語(yǔ)言的層次劃分 (7)主流語(yǔ)言進(jìn)化史 (8)IDE - VisualStudio 2022 簡(jiǎn)介 (9)C 語(yǔ)言是面向過程的編程語(yǔ)言 (10)思維導(dǎo)圖 (11)詳細(xì)知識(shí)匯

    2024年02月15日
    瀏覽(37)
  • C語(yǔ)言格式化輸出函數(shù)printf詳解——C語(yǔ)言基礎(chǔ)知識(shí)

    C語(yǔ)言格式化輸出函數(shù)printf詳解——C語(yǔ)言基礎(chǔ)知識(shí)

    (由于篇幅較長(zhǎng),內(nèi)容較全,建議收藏) printf函數(shù)的一般格式為: printf(格式控制字符串,輸出值參數(shù)表); 如: 其中, f=%f,c=%fn 是 格式控制字符串 , f,c 是 輸出值參數(shù)表 。 (1)格式控制字符串是用雙引號(hào)括起來的字符串,包括三類信息: 格式字符。格式字符由“%”

    2023年04月08日
    瀏覽(29)
  • “C++基礎(chǔ)入門指南:了解語(yǔ)言特性和基本語(yǔ)法”

    “C++基礎(chǔ)入門指南:了解語(yǔ)言特性和基本語(yǔ)法”

    C++是在C的基礎(chǔ)之上,容納進(jìn)去了面向?qū)ο缶幊趟枷?,并增加了許多有用的庫(kù),以及編程范式 等。熟悉C語(yǔ)言之后,對(duì)C++學(xué)習(xí)有一定的幫助 工作之后,看誰(shuí)的技術(shù)牛不牛逼,不用看誰(shuí)寫出多牛逼的代碼,就代碼風(fēng)格掃一眼,立刻就能看出來是正規(guī)軍還是野生的程序員。代碼的風(fēng)

    2024年02月16日
    瀏覽(33)
  • c++:基于c語(yǔ)言基礎(chǔ)上的語(yǔ)法不同(1)

    c++:基于c語(yǔ)言基礎(chǔ)上的語(yǔ)法不同(1)

    前言:此篇文章適合學(xué)完c語(yǔ)言基礎(chǔ)概念的同學(xué),是幫助c向c++語(yǔ)言的同學(xué)快速掌握基本語(yǔ)法。 按照c語(yǔ)言的語(yǔ)法也可以,頭文件多包含#includestring 下面是通過數(shù)組名的方法打印字符串hello world。 1e2就是1x10的二次方 1e-2就是1x10的負(fù)二次方 float類型后面的數(shù)字要多寫一個(gè)f,不然編

    2024年01月20日
    瀏覽(29)
  • 【Go 基礎(chǔ)篇】Go語(yǔ)言匿名函數(shù)詳解:靈活的函數(shù)表達(dá)式與閉包

    【Go 基礎(chǔ)篇】Go語(yǔ)言匿名函數(shù)詳解:靈活的函數(shù)表達(dá)式與閉包

    在Go語(yǔ)言中,函數(shù)是一等公民,這意味著函數(shù)可以像其他類型的值一樣被操作、傳遞和賦值。匿名函數(shù)是一種特殊的函數(shù),它沒有固定的函數(shù)名,可以在代碼中被直接定義和使用。匿名函數(shù)在Go語(yǔ)言中具有重要的地位,它們常用于實(shí)現(xiàn)閉包、函數(shù)式編程和并發(fā)編程等領(lǐng)域。 本

    2024年02月11日
    瀏覽(38)
  • 【Go 基礎(chǔ)篇】Go語(yǔ)言日期與時(shí)間函數(shù)詳解:時(shí)間的掌控與轉(zhuǎn)化

    【Go 基礎(chǔ)篇】Go語(yǔ)言日期與時(shí)間函數(shù)詳解:時(shí)間的掌控與轉(zhuǎn)化

    Go語(yǔ)言是一種快速、簡(jiǎn)潔且高效的編程語(yǔ)言,它在處理日期與時(shí)間方面提供了豐富的標(biāo)準(zhǔn)庫(kù)函數(shù)。本文將詳細(xì)介紹Go語(yǔ)言中處理日期與時(shí)間的函數(shù),涵蓋常用的日期時(shí)間操作、格式化、時(shí)區(qū)轉(zhuǎn)換等內(nèi)容,并介紹 time.Time 結(jié)構(gòu)體中的相關(guān)方法。 在Go語(yǔ)言中,時(shí)間被表示為 time.Tim

    2024年02月11日
    瀏覽(22)
  • 【Go 基礎(chǔ)篇】Go語(yǔ)言 init函數(shù)詳解:包的初始化與應(yīng)用

    在Go語(yǔ)言中, init() 函數(shù)是一種特殊的函數(shù),用于在包被導(dǎo)入時(shí)執(zhí)行一次性的初始化操作。 init() 函數(shù)不需要手動(dòng)調(diào)用,而是在包被導(dǎo)入時(shí)自動(dòng)執(zhí)行。這使得我們可以在包導(dǎo)入時(shí)完成一些必要的初始化工作,確保包的使用具有正確的環(huán)境和狀態(tài)。 本篇博客將深入探討 init() 函數(shù)

    2024年02月11日
    瀏覽(37)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包