日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C++中的函數你真的理解了嗎_C 語言

作者:沒有省略號 ? 更新時間: 2022-04-20 編程語言

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

欄目分類
最近更新