網站首頁 編程語言 正文
1 概述
作用:將一段經常使用的代碼進行封裝起來,減少重復代碼。
一個較大的程序,一般分為若干個程序塊,每個模塊實現特定的功能。
2 函數的定義及調用
函數的定義一般主要有5個步驟:
1、返回值類型:一個函數可以返回一個值,需要知道這個值的類型。
2、函數名:給函數起個名字。
3、參數表列:使用該函數時,傳入的數據。
4、函數體語句:花括號內的代碼,函數內需要執行的語句。
5、return 表達式:和返回值類型掛鉤,函數執行完后,返回相應的數據。
定義語法:
返回值類型 函數名(參數列表) { 函數體語句; return表達式; }
調用語法:
函數名(參數)
示例:
#include<iostream> using namespace std; //返回值類型 函數名 (參數列表){ 函數體語句 ; return表達式;} //定義一個兩整型數相加的函數 int add(int num1, int num2)//num1和num2并沒有真實數據,只是一個形式上的參數,簡稱形參 { int sum = num1 + num2; return sum; } int main() { //main函數中調用add函數 int a = 3, b = 4; //函數調用語法:函數名稱(參數) int c = add(a, b); //a和b是真實的數據,稱為實際參數,簡稱實參 cout << c << endl; system("pause"); return 0; }
3 值傳遞
- 所謂值傳遞,就是函數調用時實參將數值傳入給形參。
- 值傳遞時,如果形參發生任何改變,并不會影響實參。
#include<iostream> using namespace std; //定義一個交換數字的函數 //因為函數沒有返回值,所以可以定義函數類型為void-無類型。 void swap(int num1,int num2) { cout << "交換前:" << num1 << " " << num2 << endl; int temp = num1; num1 = num2; num2 = temp; cout << "交換后:" << num1 << " " << num2 << endl; } int main() { int a = 10, b = 20; swap(a, b); //形參的改變并不影響實參本身 cout << "a = " << a << "\n" << "b = " << b << endl; system("pause"); return 0; }
值傳遞實際上是為形參開辟一塊新的內存地址,將實參的值傳遞給形參的內存中,對形參進行運算,所以并不涉及到實參的改變。
4 函數的常見形式
常見的函數樣式有4種:
- 無參無返
- 有參無返
- 無參有返
- 有參有返
示例:
#include<iostream> using namespace std; //1.無參無返 void test01() { cout << "無參無返" << endl; } //2.有參無返 void test02(int num1,int num2) { cout << "有參無返" << num1 << num2 << endl; } //3.無參有返 int test03() { cout << "無參有返 " ; return 1000; } //4.有參有返 int test04(int num) { cout << "有參有返 " ; return num; } int main() { test01(); test02(100, 200); cout << "返回值為:" << test03() << endl; cout << "返回值為:" << test04(100) << endl; system("pause"); return 0; }
5 函數的聲明
作用:告訴編譯器函數名稱及如何調用函數。函數的實際主體可以單獨定義。
當自己創建的函數位于main函數下方的時候,編譯器會先運行main函數,從而找不到我們定義的函數而報錯,所以需要函數聲明,這樣我們的函數定義就可以放在main函數的下方了。
- 函數的聲明可以多次,但是函數的定義只能有一次。
語法:
數據類型 函數名(參數列表)
示例:
#include<iostream> using namespace std; //函數的聲明 int maxtest(int a, int b); int main() { //int maxtest(int a, int b); 寫這里也可以 int a = 10; int b = 20; cout << maxtest(a, b) << endl; system("pause"); return 0; } //定義函數 int maxtest(int a, int b) { return a > b ? a : b; }
6 函數的分文件編寫作用:讓代碼結構更加清晰
作用:讓代碼結構更加清晰
函數分文件編寫一般有4個步驟:
- 創建后綴名為.h的頭文件
- 創建后綴名為.cpp的源文件
- 在頭文件中寫函數的聲明
- 在源文件中寫函數的定義
-----注意下面的這個例子使用了swap的函數名,而上面源文件中的函數名已經有了swap,一個項目里不能對同一函數名多次定義,所以可以手動改一下上面"值傳遞.cpp中的"的swap函數名,隨便換一個其他的就行。
1.
2.
3.
#include<iostream> using namespace std; void swap(int a, int b);
4.
#include"swap.h" void swap(int a, int b) { int temp = a; a = b; b = temp; cout << "a = " << a << endl; cout << "b = " << b << endl; }
#include<iostream> #include"swap.h" using namespace std; int main() { int a = 10, b = 20; swap(a, b); system("pause"); return 0; }
總結
原文鏈接:https://blog.csdn.net/qq_49030008/article/details/122921758
相關推薦
- 2022-05-10 Element-ui 中 Table 表格的設置表頭/去除下標線/設置行間距等屬性的使用及 slot
- 2024-03-08 jdk版本不兼容 Error creating bean with name ‘springSecu
- 2022-11-15 Flutter異步操作實現流程詳解_Android
- 2022-08-23 Rx.NET庫中IDisposable對象的用法_實用技巧
- 2022-06-22 Github創建個人訪問Tokens令牌_其它綜合
- 2024-02-28 UNI-APP設置屏幕保持常亮
- 2022-05-12 el-table滾動懶加載,顯示加載狀態
- 2022-03-22 C#中數據類型的轉換介紹_C#教程
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支