【C++ 記憶站】缺省參數

在這里插入圖片描述

文章目錄

    • 缺省參數的概念
    • 缺省參數的分類
      • 1、全缺省參數
      • 2、半缺省參數
    • 缺省參數實際應用場景

在這里插入圖片描述

缺省參數的概念

缺省參數是聲明或定義函數時為函數的參數指定一個缺省值。在調用該函數時,如果沒有指定實參則采用該形參的缺省值,否則使用指定的實參

正常調用一個函數

//正常調用一個函數,實參傳遞給形參
void func(int i)
{cout << i << endl;
}int main()
{func(1);func(2);func(3);
}

加入缺省參數

缺省參數就相對一個備胎,實參沒傳值過來,那么形參就用缺省參數給的值
打印結果:
在這里插入圖片描述

void func(int i = 0)
{cout << i << endl;
}int main()
{func(1);func(2);func();
}

缺省參數的分類

1、全缺省參數

//全缺省參數
void func(int a = 10,int b =20,int c = 30)
{cout << a << endl;cout << b << endl;cout << c << endl;
}int main()
{func();cout << endl;func(1);cout << endl;func(1,2);cout << endl;func(1, 2, 3);cout << endl;return 0;
}

打印結果:
在這里插入圖片描述
注意千萬不能這樣寫,這是c++語法不支持的
在這里插入圖片描述


2、半缺省參數

//半缺省參數
void func(int a, int b = 20, int c = 30)
{cout << a << endl;cout << b << endl;cout << c << endl;
}int main()
{cout << endl;func(1);cout << endl;func(1, 2);cout << endl;func(1, 2, 3);cout << endl;return 0;
}

打印結果
在這里插入圖片描述
注意必須從左往右連續缺省
在這里插入圖片描述
千萬不能這樣
在這里插入圖片描述


缺省參數實際應用場景

舉一個例子,利用 缺省參數 實現數據結構中的 棧(Stack) 初始化

之前用C語言來實現這個初始化是這樣的

struct Stack
{int* a;int top;//棧頂int capacity;//棧的容量
};void StackInit(struct Stack* ps)
{ps->a = NULL;//pst->top = -1;   // top 指向棧頂數據ps->top = 0;   // top 指向棧頂數據的下一個位置ps->capacity = 0;
}

這里的capacity(容量) 就直接初始化為0了,因為在之前棧實現是動態開辟容量空間的,當一個元素入棧,就會先檢查空間是否足夠,如果不夠就再來增加容量,這種情況是當你不知道要入多少元素到棧里面去,你只能每次入棧前就先檢查一下容量是否足夠,如果不夠往往容量空間是成倍數的增加的,當你不在需要入元素進棧就會產生一定的空間浪費


現在這種利用缺省參數的形式,在你確認需要入多少個元素的情況下直接把capacity定義為缺省參數,例如下面的方式:

struct Stack
{int* a;int top;//棧頂int capacity;//棧的容量
};void StackInit(struct Stack* ps, int capacity = 4)
{ps->a = (int*)malloc(sizeof(int) * capacity);ps->top = 0;ps->capacity = capacity;
}int main()
{struct Stack st;StackInit(&st, 100);
}

現在知道一定會插入100個數據,就可以顯示傳參數100,提前開好空間,避免空間擴容這個步驟,減少空間的浪費


在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41744.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41744.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41744.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

音頻解碼及如何在Java實現

本人并不干這個&#xff0c;但是被迫下水了解了一下這個&#xff0c;稍微做了一下整理。再就是感覺現在網上以及ChatGPT在這方面給出的答案太水了&#xff0c;在此開辟一篇。無意放出代碼&#xff0c;這里只介紹一些可能重要的點。 本來以為有了ChatGPT寫這些就沒有必要了&…

Docker部署ES服務,canal全量同步的時候內存爆炸,ES/Canal Adapter自動關閉,CPU100%

文章目錄 問題解決方案1. 對ES的限制2. 對Canal-Adapter的限制 問題 使用canal-adapter全量同步&#xff08;參考Canal Adapter1.1.5版本API操作服務&#xff0c;手動同步數據&#xff08;4&#xff09;&#xff09;的時候 小批量數據可以正常運行&#xff08;幾千條&#xf…

Llama 2免費托管及API提供

Llama 2 是 Meta 最新的文本生成模型&#xff0c;目前其性能優于所有開源替代方案。 推薦&#xff1a;用 NSDT編輯器 快速搭建可編程3D場景 1、強大的Llama 2 它擊敗了 Falcon-40B&#xff08;之前最好的開源基礎模型&#xff09;&#xff0c;與 GPT-3.5 相當&#xff0c;僅低…

【uni-app】 .sync修飾符與$emit(update:xxx)實現數據雙向綁定

最近在看uni-app文檔&#xff0c;看到.sync修飾符的時候&#xff0c;覺得很有必要記錄一下 其實uni-app是一個基于Vue.js和微信小程序開發框架的跨平臺開發工具 所以經常會聽到這樣的說法&#xff0c;只要你會vue&#xff0c;uni-app就不難上手 在看文檔的過程中&#xff0c;發…

.netcore grpc客戶端工廠及依賴注入使用

一、客戶端工廠概述 gRPC 與 HttpClientFactory 的集成提供了一種創建 gRPC 客戶端的集中方式。可以通過依賴包Grpc.Net.ClientFactory中的AddGrpcClient進行gRPC客戶端依賴注入AddGrpcClient函數提供了許多配置項用于處理一些其他事項&#xff1b;例如AOP、重試策略等 二、案…

miniExcel 生成excel

一、nuget dotnet add package MiniExcel --version 1.31.2 二、新建表及數據 ExampleProducts 三、這里我用了Dapper.Query方法 讀取excel public virtual async Task<IActionResult> Anonymous(){try{//using (var connection _dbContext.GetDbConnection())//{//…

linux中的ifconfig和ip addr

在linux操作系統中ifconfig和ip addr都是顯示網卡配置信息的命令&#xff0c;好多人有疑惑它們有什么區別呢 區別1&#xff1a;對于linux發行的版本不一樣 ip addr是對新發行版本的linux使用會比較多&#xff1b;而ifconfig是老版本遇到使用的會比較多。 區別2&#xff1a;顯…

神經網絡基礎-神經網絡補充概念-32-神經網絡與大腦

概念 神經網絡&#xff08;Neural Networks&#xff09;是受到生物神經系統啟發而設計的機器學習模型&#xff0c;用于處理和學習復雜的數據模式。盡管神經網絡的設計和工作原理與大腦有一些相似之處&#xff0c;但它們并不完全相同&#xff0c;以下是神經網絡和大腦之間的一些…

基于 KubeSphere 的應用容器化在智能網聯汽車領域的實踐

公司簡介 某國家級智能網聯汽車研究中心成立于 2018 年&#xff0c;是擔當產業發展咨詢與建議、共性技術研發中心、創新成果轉化的國家級創新平臺&#xff0c;旨在提高我國在智能網聯汽車及相關產業在全球價值鏈中的地位。 目前著力建設基于大數據與云計算的智能汽車云端運營…

RestTemplate

RestTemplate介紹 RestTemplate是Spring提供的用于訪問RESTful服務的客戶端&#xff0c;RestTemplate提供了多種便捷訪問遠程Http服務的方法,能夠大大提高客戶端的編寫效率。RestTemplate默認依賴JDK提供http連接的能力&#xff08;HttpURLConnection&#xff09;&#xff0c;…

js拼接字符串

在js中&#xff0c;你可以使用字符串拼接的方式創建新的字符串。 下面是一些常用的方法&#xff1a; 1、使用運算符&#xff1a; var str1 "Hello"; var str2 "World"; var result str1 " " str2; console.log(result); // 輸出&#xf…

【數據結構】鏈表常見題目

文章目錄 鏈表合并兩個有序鏈表反轉鏈表復制帶隨機指針的鏈表環形鏈表環形鏈表II相交鏈表移除鏈表元素鏈表中倒數第k個節點鏈表分割鏈表的回文結構鏈表的中間節點旋轉鏈表鏈表排序鏈表求和 (逆序求)鏈表求和II (正序求)重排鏈表奇偶鏈表反轉鏈表II <==> 鏈表內指定區間反…

(二)掌握最基本的Linux服務器用法——Linux下簡單的C/C++ 程序、項目編譯

1、靜態庫與動態庫 靜態庫(Static Library)&#xff1a;靜態庫是編譯后的庫文件&#xff0c;其中的代碼在編譯時被鏈接到程序中&#xff0c;因此它會與程序一起形成一個獨立的可執行文件。每個使用靜態庫的程序都會有自己的庫的副本&#xff0c;這可能會導致內存浪費。常用后綴…

opencv簡單使用

cv2庫安裝&#xff0c; conda install opencv-python注意cv2使用時&#xff0c;路徑不能有中文。&#xff08;不然會一直’None’ _ update # 處理中文路徑問題 def cv_imread(file_path): #使用之前需要導入numpy、cv2庫&#xff0c;file_path為包含中文的路徑return cv2.imd…

idea入門與maven配置的一些介紹

idea入門與maven配置的一些介紹 1.確保Java和Maven已安裝2.創建一個新的Maven項目3.導航到要創建項目的目錄配置Maven4.配置項目的pom.xml文件5.配置其他Tomcat和設置jdk6.構建和運行項目 關于idea入門基礎配置 步驟1&#xff1a;安裝IntelliJ IDEA 首先&#xff0c;從IntelliJ…

腳本語言與編譯語言的區別

文章目錄 一、語法差異二、執行方式差異三、應用領域差異四、總結 一、語法差異 腳本語言&#xff1a;腳本語言通常使用解釋器逐行執行&#xff0c;不需要事先編譯。它的語法相對簡單&#xff0c;易于學習和使用。常見的腳本語言有Python、JavaScript和Ruby等。 編譯語言&…

上海市青少年算法2023年2月月賽(丙組)

上海市青少年算法2023年2月月賽(丙組)T1 格式改寫 題目描述 給定一個僅由拉丁字符組成字符序列,需要改寫一些字符的大小寫,使得序列全部變成大寫或全部變成小寫,請統計最少修改多少個字符才能完成這項任務。 輸入格式 一個字符序列:保證僅由拉丁字符構成 輸出格式 單個整…

golang環境搭建

1. 下載、安裝 wget -O go.tar.gz https://golang.google.cn/dl/go1.21.0.linux-amd64.tar.gz sudo rm -rf /usr/local/go && sudo tar -zxvf go.tar.gz -C /usr/local2.創建工作目錄 cd mkdir -p go/{bin,pkg,src}3.添加環境變量 sudo vim /etc/profile寫入以下…

計算機競賽 python+大數據校園卡數據分析

0 前言 &#x1f525; 優質競賽項目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于yolov5的深度學習車牌識別系統實現 &#x1f947;學長這里給一個題目綜合評分(每項滿分5分) 難度系數&#xff1a;4分工作量&#xff1a;4分創新點&#xff1a;3分 該項目較為新穎&am…