《零基礎看得懂的C++入門教程 》——(6)自己動手寫個函數

一、學習目標

  1. 了解C語言的自定義函數的使用方法
  2. 了解C語言自定義函數的傳參
  3. 了解C語言自定義函數的返回值

目錄

預備第一篇,使用軟件介紹在這一篇,C++與C使用的軟件是一樣的,查看這篇即可:《軟件介紹》
想了解編譯原理和學習方法點這篇,學習方法和一些原理C++與C都是相同的《脫離學習誤區》

《零基礎看得懂的C++入門教程 》——(1)第一個C++程序就讓你知其所以然
《零基礎看得懂的C++入門教程 》——(2)什么是數據類型、變量?一看便會
《零基礎看得懂的C++入門教程 》——(3)表達式花樣挺多鴨
《零基礎看得懂的C++入門教程 》——(4)條件判斷原來如此
《零基礎看得懂的C++入門教程 》——(5) 容我套個娃 循環

推薦

1.《備受好評的看得懂的C語言入門教程》

歡迎大家關注公眾號,公眾號每滿1024及1024倍數則會抽獎贈送機械鍵盤一份+IT書籍2份喲~
在這里插入圖片描述

二、了解C語言自定義函數的使用方法

在C++中函數是可以自定義的,根據自己的需求實現不同的函數方便在之后開發中使用。

2.1 了解自定義函數的使用方法
自定義函數由幾部分構成,最簡單的函數有返回類型修飾符、函數名以及函數體。返回類型的修飾符為類型修飾符,如int、float、char等;返回類型修飾符一般放在函數名前,函數名的定義方式與變量名定義規范類似;自定義函數的函數體則是在一對花括號內的代碼內容。

我們先看一個示例:

#include<iostream>
using namespace std;
void func(){cout<<"這里是自定義函數"<<endl;
}int main() {func(); 
}

以上代碼中,自定義函數為:

void func(){cout<<"這里是自定義函數"<<endl;
}

在以上對于函數的描述中,我們得知最簡單的函數構成為類型修飾符、函數名以及函數體。以上函數的類型修飾符為void,void表示當前函數沒有返回值(什么是返回值接下來會說到)。函數名為func,函數名后接著一堆圓括號,圓括號后有一對花括號,花括號內則是函數體。當前函數體內的內容為輸出"這里是自定義函數"這一個提示。當前函數的功能也就是顯示 "這里是自定義函數"這個內容了。

在main中,調用了自定義函數func。之前我們已經知道,函數使用方式為函數名后接一堆圓括號,所以代碼寫為 func();,用分號結束。調用后將會執行函數中的代碼將會顯示 "這里是自定義函數"

運行結果如下:

細心的同學發現,其實我們的main也是一個函數,我們使用int修飾main函數,不過main是系統函數表示當前代碼的入口,我們所編寫的代碼將會從main函數第一條語句開始運行。

2.2 了解有參函數的使用方法
有過C語言經驗的同學知道,我們經常使用printf函數,該函數我們傳入什么值將會在程序運行時顯示什么值;所傳入的值稱為參數;打個比方,洗衣機的功能是洗衣服,我們會丟衣服進去,這個衣服就是參數;再或者我們做飯的時候使用電飯鍋,電飯鍋需要的原料是米,這個米就是參數;我們自定義的函數也可以實現這個功能。例如我想顯示變量a的值,只需要修改一下上一節的代碼即可實現,代碼如下:

#include<iostream>
using namespace std;
void func(int a){cout<<"變量a 的值是:"<<a<<endl;
}int main() {int a=10;func(a); 
}

以上代碼在func函數的圓括號中添加了int aint a表示func函數接收一個整數類型的變量a;在func函數中,使用printf函數輸出了變量a的值,在函數中使用的a變量在func(int a)中表示聲明,具體值需要在使用函數時傳入。使用函數傳參只需要函數名后接的圓括號中傳入值,則表示把值賦值給func圓括號中的變量a,如func(a); 則表示把外部的a變量值賦值給func函數的a變量。

在以上函數中,func(int a)的變量a與main函數的a是有區別的;就好比你們學校校長叫做小明,你們班有個學生叫做小明,在你們班級平常稱呼中,小明指的是你們班級的小明,并不是校長;函數也一樣,在函數中,使用的a單單值函數內的a,func(int a)中的a,以及接下來函數內使用的a只代表當前函數。

結果如下:

當然傳入的值也可以寫為具體的值,代碼如下:

#include<iostream>
using namespace std;
void func(int a){cout<<"傳入的值是:"<<a<<endl;
}int main() {int a=10;func(99); 
}

運行結果如下:

2.2 了解有多個參函數的使用方法
以上了解了一個參數的自定義函數,接下來了解多個參數的自定義參數使用方法。查看示例:

#include<iostream>
using namespace std;
void func(int a,int b){cout<<"a+b的值是:"<<a+b<<endl;
}int main() {int a1=10,b1=11;func(a1,b1); 
}

以上代碼中,func函數接收兩個參數,一個是a,一個是b,兩個參數之間使用逗號間隔,func自定義函數中則會輸出兩個數相加的結果。在main函數中,定義了兩個變量一個為a1,一個為b1,使用func后傳入兩個變量,它們之間使用逗號間隔。

運行結果如下:

2.2 了解自定義函數返回值
我們修改上一節示例,現在需求更換為只需要得到兩個值做加法運算后的值,不需要在函數中輸出,只需要在外部輸出結果。代碼如下:

#include<iostream>
using namespace std;
int func(int a,int b){int c=a+b ;return c; 
}int main() {int a=10,b=11;int c=func(a,b); cout<<c<<endl;
}

以上代碼中,void func 修改成了int func,void表示當前函數無返回值,使用int 表示當前函數將會返回一個整數值表示當前函數最終的結果。

在函數體中定義了一個整數類型變量c,并且直接賦值為a+b的結果;最后使用return關鍵字表示把變量c的值給返回出去。在外部需要使用一個變量接收如 int c=func(a,b); ,這時變量c就得到了func函數返回的值。在以上代碼中使用cout查看c的結果。

運行結果如下:

當然也可以直接輸出函數的結果值:

#include<iostream>
using namespace std;
int func(int a,int b){int c=a+b ;return c; 
}int main() {int a=10,b=11;cout<<func(a,b)<<endl;
}

想要再簡便代碼一點也可以這樣:

#include<iostream>
using namespace std;
int func(int a,int b){return a+b; 
}int main() {int a=10,b=11;cout<<func(a,b)<<endl;
}

描述函數返回值的修飾符一定要與返回值類型一致,否則將會出現無法預料的結果或者直接報錯。

以上代碼我使用void修飾了一個有返回值的函數,編譯器直接報錯提示我的函數是有返回值的但是用了void修飾。

三、總結

通過以上描述與講解,我們了解了以下幾點內容:

  1. 了解了自定義函數的基本使用方法
  2. 了解了自定義函數類型修飾符與變量類型修飾符一致
  3. 了解了有參自定義函數的使用方法
  4. 了解了自定義函數有返回值的使用方法

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

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

相關文章

k8s mysql數據同步_K8s——MySQL實現數據持久化

1、搭建nfs存儲[rootdocker-k8s01 ~]# yum -y install nfs-utils[rootdocker-k8s01 ~]# mkdir /nfsdata/mysql -p[rootdocker-k8s01 ~]# cat /etc/exports/nfsdata *(rw,sync,no_root_squash)[rootdocker-k8s01 ~]# systemctl restart nfs-server[rootdocker-k8s01 ~]# systemc…

【計算機圖形學】實驗:C#語言采用GDI+定義筆刷并填充圖形完整實驗操作流程

一、實驗目的: 熟練掌握在.net環境下對筆刷的定義,并可用定義好的筆刷填充多邊形。 二、實驗準備: 學習在.net環境下GDI+所提供的5種筆刷類型,掌握定義筆刷的方法和填充圖形的函數,如FillRectange ( )、FillEllipse ( )等。 三、實驗內容: 在.net環境中設計一個窗體…

Android之提示Invalid Region.Op - only INTERSECT and DIFFERENCE are allowed

1 問題 02-28 22:44:33.031 7379 7379 E AndroidRuntime: java.lang.IllegalArgumentException: Invalid Region.Op - only INTERSECT and DIFFERENCE are allowed 02-28 22:44:33.031 7379 7379 E AndroidRuntime: at android.graphics.Canvas.checkValidClipOp(C…

使用Java API的5個技巧

本文介紹了一些關于Java API安全和性能方面的簡單易用的技巧&#xff0c;其中包括保證API Key安全和開發Web Service方面中在框架方面選擇的一些建議。 程序員都喜歡使用API&#xff01;例如為app應用構建API或作為微服務架構體系的一部分。當然&#xff0c;使用API的前提是能讓…

管道模式 pipe

先放一個圖&#xff0c;預則立嘛 PipelinePattern.rar 這里是 不完整的碼轉載于:https://www.cnblogs.com/ganmk--jy/p/5525897.html

《零基礎看得懂的C++入門教程 》——(7)小數組玩起來

一、學習目標 了解數組的使用方法了解一維數組的使用方法了解一維數組與循環的使用方法 目錄 預備第一篇&#xff0c;使用軟件介紹在這一篇&#xff0c;C與C使用的軟件是一樣的&#xff0c;查看這篇即可&#xff1a;《軟件介紹》 想了解編譯原理和學習方法點這篇&#xff0c…

SSO 方案演進

1背景介紹 隨著業務與技術的發展&#xff0c;現今比以往任何時候都更需要單點登錄 SSO 身份驗證。現在幾乎每個網站都需要某種形式的身份驗證才能訪問其功能和內容。隨著網站和服務數量的增加&#xff0c;集中登錄系統已成為一種必要。在本文中&#xff0c;我們將討論下 …

【計算機圖形學】實驗:VB.net環境下的圖形裁剪完整實驗操作流程

一、實驗目的: 熟練掌握在.net環境下對圖形的裁剪。 二、實驗準備: 學習圖形裁剪的基本算法,以及在.net環境下裁剪圖形的基本方法。 三、實驗內容: 在.net環境中利用裁剪圖形的基本方法對任意圖形進行裁剪。

UI之常用通過顏色值和透明度怎么得到最后的顏色值

1 、問題 UI給了顏色#000000&#xff0c;透明度是75%&#xff0c;我需要最終的顏色值。 2 、透明度色值表 00%FF&#xff08;不透明&#xff09; 5%F2 10%E5 15%D8 20%CC 25%BF 30%B2 35%A5 40%99 45%8c 50%7F 55%72 60%66 65%59 70%4c 75%3F 80%33 85%21 90%19 95%0c 100%00…

《零基礎看得懂的C++入門教程 》——(8)搞定二維數組與循環嵌套

一、學習目標 了解二維數組的使用方法了解循環嵌套的使用方法 目錄 預備第一篇&#xff0c;使用軟件介紹在這一篇&#xff0c;C與C使用的軟件是一樣的&#xff0c;查看這篇即可&#xff1a;《軟件介紹》 想了解編譯原理和學習方法點這篇&#xff0c;學習方法和一些原理C與C都…

mybatis模糊查詢不同寫法

工作中用到&#xff0c;寫三種用法吧&#xff0c;第四種為大小寫匹配查詢 1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT(%, #{text}), %); 2. 使用 ${...} 代替 #{...} SELECT * FROM tableName WHERE name LIKE %${text}%; 3. 程序中拼接 Java …

常見的Ubuntu命令30條(一)

Ubuntu命令是指在Ubuntu操作系統中用于執行各種任務和操作的命令行指令。這些命令可以用于管理系統、配置網絡、安裝軟件、瀏覽文件等。Ubuntu命令通常在終端&#xff08;Terminal&#xff09;應用程序中輸入并執行。 在Ubuntu中&#xff0c;有許多常用的命令和指令。以下是一…

【計算機圖形學】實驗:C#.net環境下的圖形變換完整實驗操作流程

一、實驗目的: 熟練掌握在.net環境下對圖形的變換方法。 二、實驗準備: 學習圖形變換的基本算法,如平移、旋轉、縮放等,以及在.net環境下變換圖形的基本方法。 三、實驗內容: 在.net環境中利用變換圖形的基本方法對圖形進行變換,包括平移、旋轉、縮放、對稱、復合變…

Android之給ImageView添加點擊效果

1 問題 給ImageView添加點擊效果 2 解決辦法 1&#xff09;、新建selector.xml文件 <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"><item android:drawable&…

python基礎知識縱覽(下)

python函數 1.函數作用 最大化代碼重用和最小化代碼冗余流程的分解2.函數基本概念 def創建對象并賦值給某一變量## 創建一個函數對象并賦值給fn_namedef fn_name(args1,args2,...,argsN): <statements>復制代碼def是可執行的代碼## 通過if語句判斷來做定義函數,def是實…

《零基礎看得懂的C++入門教程 》——(9)結構體原來如此

一、學習目標 了解C語言的結構體的使用方法了解C語言結構體的結構的賦值了解多種C語言結構體變量的賦值方法和取值方法 目錄 預備第一篇&#xff0c;使用軟件介紹在這一篇&#xff0c;C與C使用的軟件是一樣的&#xff0c;查看這篇即可&#xff1a;《軟件介紹》 想了解編譯原…

微信小程序python token驗證_微信小程序python 用戶認證

按流程圖來先通過wx.login()獲取code,再通過我們后臺配置的接口獲取openid和session_key// 登錄wx.login({success: res > {console.log(res)// 發送 res.code 到后臺換取 openId, sessionKey, unionIdwx.request({url: api.GET_OPENID, //data: {js_code: res.code},succes…

C#實用技巧之:將圖標打包進DLL并讀取

概述個人的項目界面有時候需要用到很多圖標&#xff0c;這些圖片可以建立一個文件夾單獨存放&#xff0c;但有時涉及到多臺設備部署的話&#xff0c;每臺設備都需要隨項目一起拷貝過去&#xff0c;如果忘記了界面顯示就會出問題&#xff0c;有沒有更好的辦法解決&#xff1f;有…

強制IE瀏覽器或WebBrowser控件使用指定版本顯示網頁

最近為了抓取淘寶的成交數據,用C#的WebBrowser控件開發了一個簡單的程序. 發現WebBrowser控件默認使用的版本是IE7的兼容模式.而淘寶的寶貝詳細頁居然對IE7的支持不是很好. 成交記錄無法顯示,而我本機安裝的是IE10,那么有沒有辦法使我的WebBrowser控件的使用的IE版本高點呢? 查…

【計算機圖形學】實驗:VB.net環境下的繪制貝賽爾(Bezier)自由曲線完整實驗操作步驟

一、實驗目的 熟練掌握在.net環境下繪制貝賽爾自由曲線。 二、實驗準備 學習生成貝賽爾自由曲線的基本算法,以及在.net環境下繪制貝賽爾自由曲線的基本方法(DrawBezier和DrawBeziers)。 三、實驗內容 在.net環境中繪制二次、三次貝賽爾曲線。 四、實驗過程及步驟 (包…