C++-函數

函數(Function):是一個提前封裝好的、可重復使用的、完成特定功能的獨立代碼單元。

特點:提前封裝、可重復使用的、完成特定功能

將針對特定功能的、有重復使用需求的代碼,提前封裝到函數內, 在需要的時候隨時調用。

基礎函數語法

return語句執行后,函數立刻結束

函數不可定義在main內部

無返回值函數和void類型

函數的返回值并非是必須提供的,即可以聲明函數不提供返回值。

void say_hello(string name)
{    cout << name << "你好,我是黑馬程序員" << endl;    
}

當函數不提供返回值時,需要: 聲明函數返回值類型為:void

不需要寫return語句 調用者無法得到返回值

空參函數

除了返回值以外,函數的傳入參數也是可選的,即聲明不需要參數(形參)的傳入。

void i_like_you()
{for (int i = 0; i < 5; i++)    {cout << "小美,我喜歡你!!!" << endl;    }    
}

函數嵌套調用

函數作為一個獨立的代碼單元,可以在函數內調用其它函數。 這種嵌套調用關系沒有任何限制,可以根據需要無限嵌套。

形參聲明中,使用普通變量作為形參 其本質是將實參的值復制(賦值)給形參。

main函數下的是實參,聲明函數出的是形參。

參數的值傳遞和地址傳遞

在傳遞時,x,y的值并沒有發生變化;

傳遞地址的話,x、y的值發生了變化:

函數傳入數組

由于數組對象本身只是第一個元素的地址,所以數組傳參不區分值傳遞還是地址傳遞。 其本質都是傳遞的指針(地址)。

代碼舉例:

功能:

#include "iostream"
using namespace std;/** 需要實現:主菜單函數、查詢函數、存款函數、取款函數,共4個函數* 1. 啟動要求輸入用戶姓名* 2. 啟動后顯示主菜單,要求用戶輸入選擇* 3. 基于用戶選擇,提供相應功能* 4. 每一個功能內都能顯示余額和用戶姓名* 5. 每一個功能結束后,都會返回主菜單,當用戶輸入退出或輸入錯誤程序才退出*/void query_money(const string * const name, int * const money)
{cout << "-------------查詢余額-------------" << endl;cout << *name << ",您好,您的余額剩余:" << *money << "元" << endl;
}void save_money(const string * const name, int * const money, int num)
{cout << "-------------存款-------------" << endl;cout << *name << ",您好,您存款" << num << "元成功" << endl;// 余額發生變更*money = *money + num;cout << *name << ",您好,您的余額剩余:" << *money << "元" << endl;
}void get_money(const string * const name, int * const money, int num)
{cout << "-------------取款-------------" << endl;cout << *name << ",您好,您取款" << num << "元成功" << endl;// 余額發生變更*money = *money - num;cout << *name << ",您好,您的余額剩余:" << *money << "元" << endl;
}int menu(const string * const name)
{cout << *name << ",您好,歡迎來到黑馬銀行ATM。請選擇操作:" << endl;cout << "查詢余額\t[輸入1]" << endl;cout << "存款\t[輸入2]" << endl;cout << "取款\t[輸入3]" << endl;cout << "退出\t[輸入4]" << endl;cout << "請輸入您的選擇:";int num;cin >> num;return num;
}int main()
{// 啟動要求輸入用戶姓名string name;cout << "請輸入您的用戶名:" << endl;cin >> name;int * money = new int;*money = 500000;            // 余額,默認500000元bool is_run = true;while(is_run){int select_num = menu(&name);// 對用戶輸入做選擇判斷switch (select_num){case 1:query_money(&name, money);break;case 2:int num_for_save_money;cout << "請輸入您要存多少錢:" << endl;cin >> num_for_save_money;save_money(&name, money, num_for_save_money);break;case 3:int num_for_get_money;cout << "請輸入您要取多少錢:" << endl;cin >> num_for_get_money;get_money(&name, money, num_for_get_money);break;default:cout << "程序退出" << endl;is_run = false;}}delete money;return 0;
}

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

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

相關文章

Linux(openEuler22.03) 定時備份任務 解決方案

目錄 定時備份與清理服務環境需求概述步驟詳解1. 配置 rsyncd 服務在 backup 服務器上配置 rsyncd 2. 在 nfs01 和 web01 上配置備份腳本腳本&#xff1a;backup_configs.sh配置定時任務 3. 在 backup 服務器上配置同步和清理腳本腳本&#xff1a;cleanup_backups.sh配置定時任…

游戲陪玩/在線租號/任務系統網站源碼

源碼介紹 游戲陪玩系統/在線租號系統/小姐姐陪玩任務系統/網游主播任務威客平臺源碼/絕地吃雞LOL在線下單/帶手機端/聲優線上游戲任務系統網站源碼 界面美觀,功能齊全,已對接支付,安裝教程放源碼壓縮包里了! 界面截圖 源碼下載 https://download.csdn.net/download/huayula…

【計算機網絡原理】淺談應用層協議的自定義和傳輸層UDP協議的總結

?????? write in front ??????? ?????????大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之處請多多諒解&#xff0c;讓我們一起共同進步????? . ?? ?xiaoxie?????????—CSDN博客 本文由xiaoxie????????? 原創 CSDN 如…

如何在cPanel面板中開啟雙因素身份驗證

本周有一個客戶&#xff0c;購買Hostease的主機&#xff0c; 客戶購買的是Linux虛擬主機&#xff0c;帶cPanel面板的。詢問我們的在線客服&#xff0c;如何加強他的cPanel的安全性。cPanel的雙因素身份驗證功能可以幫助幫客戶加固安全性。 雙因素身份驗證(2FA)是一種增強安全性…

【虛擬機軟件】 VMware Workstation Pro 17 新建 Linux 虛擬機教程(CentOS 7 版本)

文章目錄 下載安裝 VMware Workstation Pro 17 軟件下載 Linux 的 ISO 映像文件Linux版本選擇 新建虛擬機準備配置新建安裝 后續設置文章導航 我是一名立志把細節說清楚的博主&#xff0c;歡迎【關注】&#x1f389; ~ 原創不易&#xff0c; 如果有幫助 &#xff0c;記得【點贊…

slam14講(第8講、前端里程計)LK光流、直接法

直接法的引出 因為第7講大部分都是講特征點法&#xff0c;通過提取orb特征點和點的描述子&#xff0c;來構建兩幀圖像之間的特征點對應關系。這種方法會有缺點&#xff1a; 關鍵點和描述子提取計算耗時&#xff0c;如果相機的頻率高&#xff0c;則slam算法大部分耗時被占。特…

com.alibaba.fastjson.JSONObject循環給同一對象賦值會出現“$ref“:“$[0]“現象問題

1、問題描述 有些場景下&#xff0c;我們會選擇用JSONObject代替Map來處理業務邏輯&#xff0c;但是使用JSONObject時有一個需要注意的地方&#xff1a;在處理JSONObject對象時&#xff0c;引用的com.alibaba.fastjson.JSONObject&#xff0c;在一個集合中&#xff0c;循環給這…

【MySQL精通之路】InnoDB(10)-行格式

目錄 1.表數據結構 1.1 聚集索引數據結構 1.2 輔助索引數據結構 2.行格式 2.1 REDUNDANT行格式 2.2 REDUNDANT存儲特性 2.3 COMPACT行格式 2.4 COMPACT存儲特性 2.5 DYNAMIC行格式 2.6 DYNAMIC存儲特性 2.7 COMPRESSED行格式 2.8 COMPRESSED存儲特性 3.定義表格的…

數組-區間合并

一、題目描述 二、題目思路 這里提供滿足基本要求的解題思路&#xff1a; 1.先對列表內按照start大小升序排序&#xff0c;這里創建Comparator接口的實現類&#xff0c;重寫compare方法。 2.遍歷intervals&#xff0c;設置laststart、lastend兩個變量與當前區間相比較&#…

Ansible實戰YAML語言完成apache的部署,配置,啟動全過程

&#x1f3e1;作者主頁&#xff1a;點擊&#xff01; &#x1f3dd;?Ansible專欄&#xff1a;點擊&#xff01; ??創作時間&#xff1a;2024年5月24日15點59分 目錄 &#x1f4af;趣站推薦&#x1f4af; &#x1f38a;前言 ??YAML語言回顧 &#x1f386;1.編寫YAML文…

centos 安裝nginx 并配置https ssl

進入你要安裝的目錄 一般是/usr/local/ wget https://nginx.org/download/nginx-1.24.0.tar.gz解壓安裝包&#xff1a;使用以下命令解壓下載的Nginx安裝包&#xff1a; tar -zxvf nginx-1.24.0.tar.gz在編譯和安裝Nginx之前&#xff0c;確保您的系統上已安裝了必要的編譯工具和…

flume channel和interceptor簡介及官方用例

一、Flume Channels channel是在代理上暫存事件的存儲庫。Source 添加事件&#xff0c;Sink 將其刪除。 1、Memory Channel 事件存儲在具有可配置最大大小的內存中隊列中。它非常適合需要更高吞吐量的流&#xff0c;但在agent發生故障時會丟失暫存數據 Property Name Defau…

k近鄰和kd樹

K近鄰 選取k值的時候可以采用交叉驗證的方法 一般采用歐氏距離 kd樹 采用樹這個特殊的數據結構來實現k近鄰算法 先假設是二維的情況 下面講解kd樹的完整構造過程 找這個中位數是按照每棵子樹來創建的 前提是已經有了一棵kd樹,然后來一個實例點

java組合設計模式Composite Pattern

組合設計模式&#xff08;Composite Pattern&#xff09;是一種結構型設計模式&#xff0c;它允許你將對象組合成樹形結構來表示“部分-整體”的層次結構。組合模式使得客戶端對單個對象和組合對象的使用具有一致性。 // Component - 圖形接口 interface Graphic {void draw()…

Python UDP編程簡單實例

TCP是建立可靠的連接&#xff0c;并且通信雙方都可以以流的形式發送數據。 相對于TCP&#xff0c;UDP則是面向無連接的協議&#xff0c;不需要建立連接&#xff0c;只需要知道對方IP地址和端口號&#xff0c;就可以直接發送數據包。但是只管發送不保證到達。 雖然UDP傳輸數據…

Docker快速部署Seata的TC服務以及微服務引入Seata教程

目錄 一、使用docker部署Seata的TC服務 1、拉取TC服務鏡像 2、創建并運行容器 ?3、修改配置文件 4、在Nacos中添加TC服務的配置 5、重啟TC服務 二、微服務集成Seata 1、引入依賴 2、修改配置文件 Seata是阿里的一個開源的分布式事務解決方案&#xff0c;能夠為分布…

STM32學習和實踐筆記(31):輸入捕獲實驗

1.輸入捕獲介紹 在定時器中斷實驗章節中我們介紹了通用定時器具有多種功能&#xff0c;輸入捕獲就是其中一種。STM32F1除了基本定時器TIM6和TIM7&#xff0c;其他定時器都具有輸入捕獲功能。輸入捕獲可以對輸入的信號的上升沿&#xff0c;下降沿或者雙邊沿進行捕獲&#xff0c;…

【博客主頁】博客主旨 精華

前言 與博客園不同, 最近CSDN在進行資本化的轉型.其一部分的VIP代碼和小冊我也有相關消費, 個人認為是一部分做的比較成過, 另一部分又不是特別成功. 其CSDN博客已經失去其原本技術交流的意義, 變成一種免費的知識引流和收費交流. 這其實與我們的開源社區背道而馳, 但是又吸引…

世界電信日 | 紫光展銳以科技創新支撐數字經濟可持續發展

專注科技創新&#xff0c;打造全球數字經濟技術基石 紫光展銳堅持科技創新,為數字經濟蓬勃發展提供基石力量。 面對5G-A技術的巨大潛力&#xff0c;紫光展銳與眾多生態伙伴緊密合作&#xff0c;積極推動5G-A的商用進程。紫光展銳提出的兩項R18 eRedCap演進方案已被3GPP標準采…

為什么要實現設備之間的互通?

設備之間的互通是電信設備的普遍性要求&#xff0c;特別是在接入網領域中&#xff0c;不同廠商的局端設備與用戶端&#xff08;終端&#xff09;設備之間的互通顯得尤其重要。 一、互通能為產業鏈的各個環節帶寬積極影響。 &#xff08;1&#xff09;對用戶而言&#xff0c;互…