-
函數(shù)的遞歸調(diào)用:在函數(shù)中調(diào)用自己
void func()
{
????????????func();
}
遞歸調(diào)用的三要素:
在遞歸調(diào)用中要設(shè)置好終止條件
遞歸很適合層級調(diào)用關(guān)系,每一層都執(zhí)行相同的操作,關(guān)鍵是要提取出遞歸調(diào)用的核心要素
遞歸調(diào)用的參數(shù)列表表示給下一層調(diào)用需要傳遞什么,返回值表示上一層調(diào)用需要返回什么
利用遞歸的特性,可以很簡單得處理一些利用循環(huán)特別復雜的問題,例如,遍歷文件夾,遍歷二叉樹等。
查看全部 -
1.作用:將函數(shù)體直接在調(diào)用處展開
2.優(yōu)點:沒有參數(shù)拷貝的過程,減少調(diào)用函數(shù)時的時間消耗
3.缺點:當一個函數(shù)過程要反復被調(diào)用時,不應(yīng)定義為內(nèi)聯(lián)函數(shù),因為每調(diào)用一次內(nèi)聯(lián)函數(shù),就會展開一次代碼,這樣會使得代碼體積迅速膨脹
4.內(nèi)聯(lián)函數(shù)實際上編譯器會幫你決定到底是否作為內(nèi)聯(lián)函數(shù)
5.內(nèi)聯(lián)函數(shù)與宏定義的區(qū)別:宏定義是在預(yù)編譯階段就進行了,只是做了簡單的文本替換,而內(nèi)聯(lián)函數(shù)不僅會在調(diào)用處展開代碼,且該過程是在編譯階段進行,即編譯器會對參數(shù)類型,返回值類型做檢查
inline?int?add(int?__a,int?__b) { ????return?__a+__b;???? } int?main(int?argc,char**?argv) { ????int?a?=?5; ????int?b?=?6; ???int?c?=?add(a,b); ???return?0; } //等效于 int?main(int?argc,char**?argv) { ????int?a?=?5; ????int?b?=?6; ???int?c?=?a+b; ???return?0; }
查看全部 -
利用遞歸的特性,可以很簡單得處理一些利用循環(huán)特別復雜的問題,例如,遍歷文件夾,遍歷二叉樹等。靈活使用遞歸,將帶來極大的技術(shù)提升。
查看全部 -
參數(shù)傳遞(實參,形參),只是一個復制拷貝的過程,將實參賦值拷貝給形參,無論實參的數(shù)值還是地址。
查看全部 -
但是當要跳過的語句有好多行的時候,就會顯得特別不方便。因此,我們可以嘗試利用 do-while 語法來完成。
do {
? ?if(a == 12){
? ? ? ?break;
? ?}
? ?b = a + b;
} while(false);
b = a - b;這樣,我們將 do-while 和 break 進行配合,完成一個和循環(huán)無關(guān)的程序結(jié)構(gòu)。
查看全部 -
while 和 for 的用途也不太一樣,for循環(huán)更適合循環(huán)次數(shù)比較確定的場景,例如數(shù)組遍歷等,而while 循環(huán)更適合不確定循環(huán)次數(shù)不確定的場景。
查看全部 -
switch 接受了一個變量 s,然后使用 case 語句,判斷變量 s 和哪個常量相等(case 后面只能是常量)
這就是 switch case 的特殊的地方,他在匹配到相應(yīng)的 case 之后,會將后面所有的 case 從句都執(zhí)行一次,直到碰到一個 break 語句。
查看全部 -
#include?<stdio.h> int?main(int?argc,char?**argv) { ????int?a?=?1; ????int?b?=?2; ????a?=a^b; ????b?=?a^b; ????a=?a^b; ????printf("a=%d,b=%d",a,b); ????return?0; }
查看全部 -
把數(shù)組初始化為非0值時,需要逐個賦值
查看全部 -
nullptr 是c++為描述空指針而提供的值,與NULL區(qū)別在于nullptr只能賦值給指針變量,NULL則可以賦值給整形等其他變量。兩者相較而言NULL可能會造成一些潛在的問題
查看全部 -
(int argc,char **argv)
第一個參數(shù)argc表示參數(shù)個數(shù)
第二個argv是參數(shù)組
int main
retum中main函數(shù)有返回值,返回值為0成功。非0為失敗
查看全部 -
用C++向世界問好
#include?<stdio.h>??//標準輸入輸出 int?main(int?argc,char?**argv)???//主函數(shù),是程序的入口函數(shù)。一個程序里有且只有一個main函數(shù) { ????printf("Hello?World!\n");???//stdio.h中包含printf功能 ????return?0; }
C++
#include?<iostream>?//iostream是C++里的io流的頭文件 int?main(int?argc,char?**argv) { ????std::cout?<<?"Hello?World!\n"?<<?std::endl;//C++的輸出風格 ????return?0; }
查看全部 -
#include <stdio.h>
int main()
{
? ? printf("int: %d\n",sizeof(int));
? ? return 0;
}
查看全部 -
練習1:使用函數(shù)來交換兩個數(shù)的值
#include?<iostream> int?exchange(int?*a,int?*b) {????int?c=*a;????*a=*b;????*b=c;??? ?} ?int?main(int?argc,char?**argv) ?{????int?x=5;???? ??????int?y=10;???? ??????std::cout<<"交換的前:"<<"x="<<x<<","<<"y="<<y<<std::endl;???? ??????exchange(&x,&y);???? ??????std::cout<<"交換后的:"<<"x="<<x<<","<<"y="<<y;???????? ??????return(0); ??}
練習2:利用遞歸來求一個數(shù)的階乘
int?fact(int?n) {????if(n==1)?{???????? ?????????return?1;???? ????????}???? ?????else?{???????? ?????????return?n?*?fact(n-1);???? ??????????} ?} ?int?main(int?argc,char?**argv) ?{????int?x?=?5;???? ??????int?res?=?fact(x);???? ??????std::cout<<"5!="<<res;???? ??????return?0; ??}
查看全部 -
函數(shù)的遞歸調(diào)用:可以用來遍歷文件夾,遍歷二叉樹。
查看全部
舉報