国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++】C++ 引用詳解 ① ( 變量的本質(zhì) - 引入 “ 引用 “ 概念 | 引用語(yǔ)法簡(jiǎn)介 | 引用做函數(shù)參數(shù) | 復(fù)雜類(lèi)型引用做函數(shù)參數(shù) )

這篇具有很好參考價(jià)值的文章主要介紹了【C++】C++ 引用詳解 ① ( 變量的本質(zhì) - 引入 “ 引用 “ 概念 | 引用語(yǔ)法簡(jiǎn)介 | 引用做函數(shù)參數(shù) | 復(fù)雜類(lèi)型引用做函數(shù)參數(shù) )。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。





一、變量的本質(zhì) - 引入 " 引用 " 概念



" 引用 " 語(yǔ)法 是 C++ 語(yǔ)言中 特有的 , 在 C 語(yǔ)言中是沒(méi)有 引用 這個(gè)概念的 ;


1、變量的本質(zhì) - 內(nèi)存別名


分析 引用 之前 , 先回顧下 變量 :

在 【C 語(yǔ)言】變量本質(zhì) ( 變量概念 | 變量本質(zhì) - 內(nèi)存空間別名 | 變量存儲(chǔ)位置 - 代碼區(qū) | 變量三要素 ) 博客中 , 介紹了變量的本質(zhì) :

變量 的本質(zhì)是 內(nèi)存空間 的 " 別名 " , 簡(jiǎn)稱(chēng) " 內(nèi)存別名 " , 相當(dāng)于 " 門(mén)牌號(hào) " ;

C 語(yǔ)言 / C++ 語(yǔ)言 的 程序 , 通過(guò) 變量 來(lái)申請(qǐng) 內(nèi)存空間 , 并為該 內(nèi)存空間 命名 , 名稱(chēng)就是變量名 ;

下面的代碼中 , 定義變量 a , 就是在 棧內(nèi)存 中申請(qǐng)了 4 字節(jié)內(nèi)存 , 這 4 字節(jié)連續(xù)內(nèi)存的別名是 a , 為該變量賦值 10 , 就是將 10 存儲(chǔ)到 4 字節(jié)內(nèi)存中 ;

int a = 10;

通過(guò) " 變量名稱(chēng) " 可以使用 變量名 代表的 連續(xù)內(nèi)存空間 , 之后使用變量 a 進(jìn)行計(jì)算 , 就是 使用 變量 a 表示的 4 字節(jié)內(nèi)存中的數(shù)據(jù)進(jìn)行計(jì)算 ;


2、引入 " 引用 " 概念 - 已定義變量的內(nèi)存別名


下面討論下 , 上述 變量 a 是 4 字節(jié)連續(xù)內(nèi)存空間的別名 , 那么 這段 4 字節(jié)的內(nèi)存空間 只能有一個(gè)內(nèi)存別名嗎 ? 還是可以有多個(gè)內(nèi)存別名 ?

答案是可以的 , 如果想要為 上述 4 字節(jié)內(nèi)存空間再次 賦予 一個(gè) " 內(nèi)存別名 " , 就需要使用 " 引用 " 了 ;


" 引用 " 就是 已定義 變量 的 內(nèi)存別名 ;

  • 第一次為 一塊內(nèi)存 賦予 別名 , 是 定義變量 的時(shí)候 ;
  • 第二次再為 該內(nèi)存 賦予 別名 , 就是 獲取該變量的 " 引用 " ;

3、" 引用 " 的優(yōu)點(diǎn)


C++ 語(yǔ)言中的 引用 是特殊的變量 , 通過(guò)引用可以訪問(wèn)已經(jīng)存在的變量 ;


使用 " 引用 " 的優(yōu)點(diǎn) :

  • 提高訪問(wèn)效率 : 向 函數(shù) 傳遞參數(shù)時(shí) , 使用引用可以減少消耗 , 類(lèi)似于傳入指針 , 如果傳入一個(gè)較大的數(shù)組 , 需要拷貝整個(gè)數(shù)組作為變量副本 , 拷貝會(huì)消耗很多性能 ;
  • 提高代碼可讀性 : 引用使用時(shí) , 類(lèi)似于 一級(jí)指針 , 使用引用期間 , 不需要 使用 取地址符 & 和 指針?lè)?hào) * , 提高了代碼可讀性 和 可維護(hù)性 ;
  • 函數(shù)返回值 : 函數(shù)引用參數(shù) 可以作為 返回值使用 ;




二、引用語(yǔ)法簡(jiǎn)介




1、語(yǔ)法說(shuō)明


" 引用 " 語(yǔ)法如下 :

類(lèi)型& 引用名稱(chēng) = 變量;

& 符號(hào)建議緊貼類(lèi)型寫(xiě) , 與 引用名稱(chēng) 使用空格隔開(kāi) ;

( 指針?lè)?hào) * 建議也是緊貼 指針類(lèi)型 , 與指針名稱(chēng)使用空格隔開(kāi) , 如 : int* p = NULL; )

引用 定義后 , 可以當(dāng)做變量使用 ;

通過(guò)引用 , 可以操作變量 , 訪問(wèn) , 修改 引用 , 變量也會(huì)進(jìn)行相應(yīng)修改 ;


使用引用作為函數(shù)參數(shù)時(shí) ,

  • 傳入的實(shí)參不需要使用取地址符獲取 , 直接將變量傳入函數(shù)即可 ;
  • 在函數(shù)中 訪問(wèn)引用 時(shí) , 不需要使用指針 , 直接使用引用訪問(wèn)傳入的變量 ;

代碼示例 :

	// 定義變量 a , 變量本質(zhì)是內(nèi)存別名
	int a = 10;

	// 定義引用 b , 是變量 a 的別名
	int& b = a;

	// 通過(guò)引用修改變量的值
	b = 100;

引用是 C++ 的概念 , 在 C 語(yǔ)言中不能使用引用 ;

上述代碼在 C 語(yǔ)言中實(shí)現(xiàn) 是完全不同的 , 下面是 上述代碼在 C 語(yǔ)言中的實(shí)現(xiàn) :

	// 定義變量 a , 變量本質(zhì)是內(nèi)存別名
	int a = 10;

	// 獲取 變量 a 的地址 , 賦值給 指針常量 b 
	// 指針常量 是 常量 - 指針本身不能修改 , 常量指針 是 指針 - 指向常量的指針 
	// 左數(shù)右指 , const 在 指針 * 的右邊 , 指針 是常量 , 指針的指向不能更改
	int* const b = &a;

	// 通過(guò) 指針常量 修改 指針指向的內(nèi)存空間的值
	// 指針指向不能修改 , 指向的內(nèi)存中的內(nèi)容可以修改
	*b = 100;

在上述代碼中 ,

  • 首先 , 獲取 變量 a 的地址 , 賦值給 指針常量 b ;
    • 指針常量 是 常量 - 指針本身不能修改 ;
    • 常量指針 是 指針 - 指向常量的指針 ;
    • 左數(shù)右指 , const 在 指針 * 的右邊 , 指針 是常量 , 指針的指向不能更改 ;
  • 然后 , 通過(guò) 指針常量 修改 指針指向的內(nèi)存空間的值 ;
    • 指針指向的地址不能修改 ;
    • 指針指向的內(nèi)存中的內(nèi)容可以修改 ;

2、代碼示例 - 引用的定義和使用


下面的代碼中 , 引用 b 是 變量 a 的別名 , 通過(guò) 引用 b 可以訪問(wèn) 變量 a 的內(nèi)存空間 ;

代碼中同時(shí)打印 引用 b 和 變量 a , 都可以打印出 變量值 10 ;

修改 引用 b 的值 , 變量 a 的值也會(huì)被修改 ;


代碼示例 :

// 包含 C++ 頭文件
#include "iostream"

// 使用 std 標(biāo)準(zhǔn)命名空間
//		該命名空間中 , 定義了很多標(biāo)準(zhǔn)定義
using namespace std;

// 導(dǎo)入 C 頭文件
#include <stdio.h>

int main()
{
	// 定義變量 a , 變量本質(zhì)是內(nèi)存別名
	int a = 10;

	// 定義引用 b , 是變量 a 的別名
	int& b = a;

	// 打印 變量 a 和 引用 b 的值
	printf("a = %d, b = %d\n", a, b);

	// 通過(guò)引用修改變量值
	b = 100;

	// 打印 變量 a 和 引用 b 的值
	printf("a = %d, b = %d\n", a, b);


	// 控制臺(tái)暫停 , 按任意鍵繼續(xù)向后執(zhí)行
	//system("pause");
    return 0;
}

執(zhí)行結(jié)果 :

a = 10, b = 10
a = 100, b = 100

【C++】C++ 引用詳解 ① ( 變量的本質(zhì) - 引入 “ 引用 “ 概念 | 引用語(yǔ)法簡(jiǎn)介 | 引用做函數(shù)參數(shù) | 復(fù)雜類(lèi)型引用做函數(shù)參數(shù) ),C++,c++,引用,變量,C語(yǔ)言,引用參數(shù),原力計(jì)劃





三、引用做函數(shù)參數(shù)




1、普通引用必須初始化 - 函數(shù)參數(shù)除外


普通的引用 , 必須要依附于某個(gè)變量 , 在定義 " 引用 " 時(shí) , 必須進(jìn)行初始化 , 否則就會(huì)報(bào)如下錯(cuò)誤 :

引用 變量 x 需要初始值設(shè)定項(xiàng)

【C++】C++ 引用詳解 ① ( 變量的本質(zhì) - 引入 “ 引用 “ 概念 | 引用語(yǔ)法簡(jiǎn)介 | 引用做函數(shù)參數(shù) | 復(fù)雜類(lèi)型引用做函數(shù)參數(shù) ),C++,c++,引用,變量,C語(yǔ)言,引用參數(shù),原力計(jì)劃


這里有一種特殊情況 , 在聲明時(shí)可以不進(jìn)行初始化 ,

" 引用 " 做 函數(shù) 形參 時(shí) , 可以不進(jìn)行初始化 ;


使用 引用 作為 函數(shù)參數(shù) , 與 一級(jí)指針 效果相同 , 并且用起來(lái)比較簡(jiǎn)單 , 不需要操作指針 ;

引用 比較符合 Java / C# 語(yǔ)言風(fēng)格 , 不需要操作繁瑣的指針 ;


定義兩個(gè)變量 :

	// 定義變量 a , b ,  變量本質(zhì)是內(nèi)存別名
	int a = 10, b = 20;

寫(xiě)一個(gè)函數(shù) , 交換這兩個(gè)變量的值 ;


2、代碼示例 - 使用普通變量作為參數(shù) ( 無(wú)法實(shí)現(xiàn)變量交換 )


下面的代碼中 , 定義的交換函數(shù) , 傳入的形參是普通變量 ;

參數(shù)是普通變量 , 實(shí)參就是變量的副本 , 變量的作用域僅限于函數(shù)內(nèi) , 無(wú)法傳遞到函數(shù)外部 , 外部的變量無(wú)法被改變 ;


代碼示例 :

// 包含 C++ 頭文件
#include "iostream"

// 使用 std 標(biāo)準(zhǔn)命名空間
//		該命名空間中 , 定義了很多標(biāo)準(zhǔn)定義
using namespace std;

// 導(dǎo)入 C 頭文件
#include <stdio.h>

// 交換 a 和 b 的值
// 該函數(shù)無(wú)法實(shí)現(xiàn)交換 , 因?yàn)閭魅氲膶?shí)參只是副本
// 并不能真實(shí)的改變傳入的值
void swap(int a, int b) 
{
	int c = 0;
	c = a;
	a = b;
	b = c;
}

int main()
{
	// 定義變量 a , b ,  變量本質(zhì)是內(nèi)存別名
	int a = 10, b = 20;

	// 打印 變量 a 和 引用 b 的值
	printf("a = %d, b = %d\n", a, b);

	// 傳入變量副本 : 交換 a 和 b 的值 , 交換失敗
	swap(a, b);
	// 打印 變量 a 和 引用 b 的值
	printf("a = %d, b = %d\n", a, b);


	// 控制臺(tái)暫停 , 按任意鍵繼續(xù)向后執(zhí)行
	system("pause");
    return 0;
}

執(zhí)行結(jié)果 :

a = 10, b = 20
a = 10, b = 20

【C++】C++ 引用詳解 ① ( 變量的本質(zhì) - 引入 “ 引用 “ 概念 | 引用語(yǔ)法簡(jiǎn)介 | 引用做函數(shù)參數(shù) | 復(fù)雜類(lèi)型引用做函數(shù)參數(shù) ),C++,c++,引用,變量,C語(yǔ)言,引用參數(shù),原力計(jì)劃


3、代碼示例 - 使用指針變量作為參數(shù) ( C 語(yǔ)言中實(shí)現(xiàn)變量交換的方法 )


在下面的代碼中 , 使用 C 語(yǔ)言的方式實(shí)現(xiàn)了 變量交換函數(shù) ;

函數(shù)參數(shù)接收 指針變量 作為 參數(shù) , 傳入的實(shí)參是變量的地址 ;

在函數(shù)內(nèi)部 , 訪問(wèn)變量需要通過(guò) 指針 * 符號(hào)進(jìn)行 ;

這樣可以實(shí)現(xiàn) 外部變量 的數(shù)值交換 , 但是 使用 指針 * 進(jìn)行操作 , 代碼十分復(fù)雜繁瑣 , 不易理解 ;


代碼示例 :

// 包含 C++ 頭文件
#include "iostream"

// 使用 std 標(biāo)準(zhǔn)命名空間
//		該命名空間中 , 定義了很多標(biāo)準(zhǔn)定義
using namespace std;

// 導(dǎo)入 C 頭文件
#include <stdio.h>

// 交換 a 和 b 的值
// C 語(yǔ)言中可以使用該方法
void swap(int* a, int* b)
{
	int c = 0;
	c = *a;
	*a = *b;
	*b = c;
}

int main()
{
	// 定義變量 a , b ,  變量本質(zhì)是內(nèi)存別名
	int a = 10, b = 20;

	// 打印 變量 a 和 引用 b 的值
	printf("a = %d, b = %d\n", a, b);

	// 傳入指針地址 : 交換 a 和 b 的值 , 交換成功
	swap(&a, &b);
	// 打印 變量 a 和 引用 b 的值
	printf("a = %d, b = %d\n", a, b);


	// 控制臺(tái)暫停 , 按任意鍵繼續(xù)向后執(zhí)行
	system("pause");
    return 0;
}

執(zhí)行結(jié)果 :

a = 10, b = 20
a = 20, b = 10

【C++】C++ 引用詳解 ① ( 變量的本質(zhì) - 引入 “ 引用 “ 概念 | 引用語(yǔ)法簡(jiǎn)介 | 引用做函數(shù)參數(shù) | 復(fù)雜類(lèi)型引用做函數(shù)參數(shù) ),C++,c++,引用,變量,C語(yǔ)言,引用參數(shù),原力計(jì)劃


4、代碼示例 - 使用引用作為參數(shù) ( C++ 語(yǔ)言中實(shí)現(xiàn)變量交換的方法 )


在下面的代碼中 , 使用引用作為函數(shù)參數(shù) , 也實(shí)現(xiàn)了變量交換 ;

C++ 中的引用使用非常簡(jiǎn)單 , 沒(méi)有使用指針進(jìn)行操作 ;

在使用引用時(shí) , 可以看到 引用的效果 , 實(shí)際上等同于一級(jí)指針 ;

使用引用作為函數(shù)參數(shù)時(shí) , 傳入的實(shí)參不需要使用取地址符獲取 , 直接將變量傳入函數(shù)即可 , 在函數(shù)中獲取引用的值時(shí) , 不需要使用指針 , 直接使用引用訪問(wèn)傳入的變量 ;


代碼示例 :

// 包含 C++ 頭文件
#include "iostream"

// 使用 std 標(biāo)準(zhǔn)命名空間
//		該命名空間中 , 定義了很多標(biāo)準(zhǔn)定義
using namespace std;

// 導(dǎo)入 C 頭文件
#include <stdio.h>

// 交換 a 和 b 的值
// C++ 中推薦的方法
// 使用引用作為函數(shù)參數(shù) 
void swap(int& a, int& b)
{
	int c = 0;
	c = a;
	a = b;
	b = c;
}

int main()
{
	// 定義變量 a , b ,  變量本質(zhì)是內(nèi)存別名
	int a = 10, b = 20;

	// 打印 變量 a 和 引用 b 的值
	printf("a = %d, b = %d\n", a, b);

	// 傳入引用本 : 交換 a 和 b 的值 , 交換成功
	swap(a, b);
	// 打印 變量 a 和 引用 b 的值
	printf("a = %d, b = %d\n", a, b);


	// 控制臺(tái)暫停 , 按任意鍵繼續(xù)向后執(zhí)行
	system("pause");
    return 0;
}

執(zhí)行結(jié)果 :

a = 10, b = 20
a = 20, b = 10

【C++】C++ 引用詳解 ① ( 變量的本質(zhì) - 引入 “ 引用 “ 概念 | 引用語(yǔ)法簡(jiǎn)介 | 引用做函數(shù)參數(shù) | 復(fù)雜類(lèi)型引用做函數(shù)參數(shù) ),C++,c++,引用,變量,C語(yǔ)言,引用參數(shù),原力計(jì)劃


5、代碼示例 - 完整代碼示例


完整代碼示例 :

// 包含 C++ 頭文件
#include "iostream"

// 使用 std 標(biāo)準(zhǔn)命名空間
//		該命名空間中 , 定義了很多標(biāo)準(zhǔn)定義
using namespace std;

// 導(dǎo)入 C 頭文件
#include <stdio.h>

// 交換 a 和 b 的值
// 該函數(shù)無(wú)法實(shí)現(xiàn)交換 , 因?yàn)閭魅氲膶?shí)參只是副本
// 并不能真實(shí)的改變傳入的值
void swap1(int a, int b) 
{
	int c = 0;
	c = a;
	a = b;
	b = c;
}

// 交換 a 和 b 的值
// C 語(yǔ)言中可以使用該方法
void swap2(int* a, int* b)
{
	int c = 0;
	c = *a;
	*a = *b;
	*b = c;
}

// 交換 a 和 b 的值
// C++ 中推薦的方法
void swap3(int& a, int& b)
{
	int c = 0;
	c = a;
	a = b;
	b = c;
}

int main()
{
	// 定義變量 a , b ,  變量本質(zhì)是內(nèi)存別名
	int a = 10, b = 20;

	// 打印 變量 a 和 引用 b 的值
	printf("a = %d, b = %d\n", a, b);

	// 傳入變量副本 : 交換 a 和 b 的值 , 交換失敗
	swap1(a, b);
	// 打印 變量 a 和 引用 b 的值
	printf("a = %d, b = %d\n", a, b);

	// 傳入指針 : 交換 a 和 b 的值 , 交換成功
	swap2(&a, &b);
	// 打印 變量 a 和 引用 b 的值
	printf("a = %d, b = %d\n", a, b);

	// 傳入引用 : 交換 a 和 b 的值 , 交換成功
	swap3(a, b);
	// 打印 變量 a 和 引用 b 的值
	printf("a = %d, b = %d\n", a, b);


	// 控制臺(tái)暫停 , 按任意鍵繼續(xù)向后執(zhí)行
	//system("pause");
    return 0;
}

執(zhí)行結(jié)果 :

a = 10, b = 20
a = 10, b = 20
a = 20, b = 10
a = 10, b = 20

【C++】C++ 引用詳解 ① ( 變量的本質(zhì) - 引入 “ 引用 “ 概念 | 引用語(yǔ)法簡(jiǎn)介 | 引用做函數(shù)參數(shù) | 復(fù)雜類(lèi)型引用做函數(shù)參數(shù) ),C++,c++,引用,變量,C語(yǔ)言,引用參數(shù),原力計(jì)劃





四、復(fù)雜類(lèi)型引用做函數(shù)參數(shù)




1、復(fù)雜類(lèi)型參數(shù)的三種傳遞方式


定義一個(gè)結(jié)構(gòu)體類(lèi)型 , 想要傳遞結(jié)構(gòu)體對(duì)象到函數(shù)中 , 有三種方式 ;

// 定義一個(gè)結(jié)構(gòu)體 
// C++ 中結(jié)構(gòu)體就是類(lèi)
struct Student
{
	char name[64];
	int age;
};

在棧內(nèi)存中先創(chuàng)建該結(jié)構(gòu)體對(duì)象 , 為該對(duì)象賦值 ;

	Student s;
	s.age = 18;

I 、傳遞結(jié)構(gòu)體對(duì)象本身


第一種方式 , 直接傳遞結(jié)構(gòu)體對(duì)象本身 ,

  • 函數(shù)傳遞 : 這種方式傳遞的是 結(jié)構(gòu)體 對(duì)象的副本 , 需要拷貝對(duì)象然后將拷貝副本作為實(shí)參傳遞給函數(shù) , 拷貝的過(guò)程非常消耗性能 ;
  • 參數(shù)訪問(wèn) : 傳入的參數(shù)在函數(shù)中正常訪問(wèn) ,使用 . 訪問(wèn)結(jié)構(gòu)體成員 ;
  • 參數(shù)修改 : 修改該參數(shù) , 不會(huì)影響外部結(jié)構(gòu)體對(duì)象的值 , 因?yàn)樾薷牡氖强截惡蟮母北?;
// 直接傳入結(jié)構(gòu)體類(lèi)對(duì)象本身
void printStudent1(Student s)
{
	// 使用變量 , 直接使用 . 訪問(wèn)結(jié)構(gòu)體成員
	cout << "printStudent1 開(kāi)始執(zhí)行 age : " << s.age << endl;
	s.age = 19;
}

II 、傳遞結(jié)構(gòu)體指針


第二種方式 , 傳遞結(jié)構(gòu)體 指針 ,

  • 函數(shù)傳遞 : 這種方式傳遞的是 結(jié)構(gòu)體 指針 , 實(shí)際上是指針的副本 , 幾乎不消耗性能 ;
  • 參數(shù)訪問(wèn) : 傳入的 指針 參數(shù) 在函數(shù)中 使用 -> 訪問(wèn)結(jié)構(gòu)體成員 ;
  • 參數(shù)修改 : 通過(guò)指針 修改該參數(shù) , 外部的結(jié)構(gòu)體對(duì)象也會(huì)被修改 ;
// 傳入結(jié)構(gòu)體類(lèi)對(duì)象指針
void printStudent2(Student* s)
{
	// 通過(guò) 問(wèn)結(jié)構(gòu)體指針 訪問(wèn)成員需要使用 -> 訪問(wèn)
	cout << "printStudent2 開(kāi)始執(zhí)行 age : " << s->age << endl;
	s->age = 20;
}

III 、傳遞結(jié)構(gòu)體引用


第三種方式 , 傳遞結(jié)構(gòu)體 引用 ,

  • 函數(shù)傳遞 : 這種方式傳遞的是 結(jié)構(gòu)體 引用 , 引用只是變量的一個(gè)別名 , 幾乎不消耗性能 ;
  • 參數(shù)訪問(wèn) : 傳入的 引用 參數(shù) 在函數(shù)中 使用 . 訪問(wèn)結(jié)構(gòu)體成員 , 與變量用法一樣 ;
  • 參數(shù)修改 : 通過(guò)指針 修改該參數(shù) , 外部的結(jié)構(gòu)體對(duì)象也會(huì)被修改 ;
// 傳入結(jié)構(gòu)體類(lèi)對(duì)象指針
void printStudent2(Student* s)
{
	// 通過(guò) 問(wèn)結(jié)構(gòu)體指針 訪問(wèn)成員需要使用 -> 訪問(wèn)
	cout << "printStudent2 開(kāi)始執(zhí)行 age : " << s->age << endl;
	s->age = 20;
}

2、代碼示例 - 使用三種傳遞方式傳遞參數(shù)


代碼示例 :

// 包含 C++ 頭文件
#include "iostream"

// 使用 std 標(biāo)準(zhǔn)命名空間
//		該命名空間中 , 定義了很多標(biāo)準(zhǔn)定義
using namespace std;

// 導(dǎo)入 C 頭文件
#include <stdio.h>

// 定義一個(gè)結(jié)構(gòu)體 
// C++ 中結(jié)構(gòu)體就是類(lèi)
struct Student
{
	char name[64];
	int age;
};

// 直接傳入結(jié)構(gòu)體類(lèi)對(duì)象本身
void printStudent1(Student s)
{
	// 使用變量 , 直接使用 . 訪問(wèn)結(jié)構(gòu)體成員
	cout << "printStudent1 開(kāi)始執(zhí)行 age : " << s.age << endl;
	s.age = 19;
}

// 傳入結(jié)構(gòu)體類(lèi)對(duì)象指針
void printStudent2(Student* s)
{
	// 通過(guò) 問(wèn)結(jié)構(gòu)體指針 訪問(wèn)成員需要使用 -> 訪問(wèn)
	cout << "printStudent2 開(kāi)始執(zhí)行 age : " << s->age << endl;
	s->age = 20;
}

// 傳入結(jié)構(gòu)體類(lèi)對(duì)象引用
void printStudent3(Student& s)
{
	// 使用 引用 跟普通變量用法相同, 不需要使用 -> 訪問(wèn)
	cout << "printStudent3 開(kāi)始執(zhí)行 age : " << s.age << endl;
	s.age = 21;
}

int main()
{
	Student s;
	s.age = 18;

	// 傳入對(duì)象 消耗性能
	printStudent1(s);
	cout << "printStudent1 執(zhí)行完畢 age : " << s.age << endl;

	// 傳入指針 需要取地址
	printStudent2(&s);
	cout << "printStudent2 執(zhí)行完畢 age : " << s.age << endl;

	// 傳入引用 直接傳入
	printStudent3(s);
	cout << "printStudent3 執(zhí)行完畢 age : " << s.age << endl;


	// 控制臺(tái)暫停 , 按任意鍵繼續(xù)向后執(zhí)行
	system("pause");
    return 0;
}

執(zhí)行結(jié)果 :

printStudent1 開(kāi)始執(zhí)行 age : 18
printStudent1 執(zhí)行完畢 age : 18
printStudent2 開(kāi)始執(zhí)行 age : 18
printStudent2 執(zhí)行完畢 age : 20
printStudent3 開(kāi)始執(zhí)行 age : 20
printStudent3 執(zhí)行完畢 age : 21
Press any key to continue . . .

【C++】C++ 引用詳解 ① ( 變量的本質(zhì) - 引入 “ 引用 “ 概念 | 引用語(yǔ)法簡(jiǎn)介 | 引用做函數(shù)參數(shù) | 復(fù)雜類(lèi)型引用做函數(shù)參數(shù) ),C++,c++,引用,變量,C語(yǔ)言,引用參數(shù),原力計(jì)劃文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-672178.html

到了這里,關(guān)于【C++】C++ 引用詳解 ① ( 變量的本質(zhì) - 引入 “ 引用 “ 概念 | 引用語(yǔ)法簡(jiǎn)介 | 引用做函數(shù)參數(shù) | 復(fù)雜類(lèi)型引用做函數(shù)參數(shù) )的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C++中的引用及指針變量

    目錄 1.1 C++中的引用 1.2 C++中的指針變量(pointer) 1.1 C++中的引用 C++中的引用(reference)是一種特殊的變量,它是某個(gè)已存在變量的另一個(gè)名字。引用變量與指針變量類(lèi)似,但引用變量必須在聲明時(shí)進(jìn)行初始化,并且一旦引用變量與某個(gè)變量關(guān)聯(lián)起來(lái),就無(wú)法再與其他變量關(guān)

    2024年01月20日
    瀏覽(26)
  • 【Linux】詳解進(jìn)程通信中信號(hào)量的本質(zhì)&&同步和互斥的概念&&臨界資源和臨界區(qū)的概念

    【Linux】詳解進(jìn)程通信中信號(hào)量的本質(zhì)&&同步和互斥的概念&&臨界資源和臨界區(qū)的概念

    ???????? 訪問(wèn)資源在安全的前提下,具有一定的順序性,就叫做同步 。在多道程序系統(tǒng)中,由于資源有限,進(jìn)程或線程之間可能產(chǎn)生沖突。同步機(jī)制就是為了解決這些沖突,保證進(jìn)程或線程之間能夠按照既定的順序訪問(wèn)共享資源。同步機(jī)制有助于避免競(jìng)態(tài)條件和死鎖(

    2024年04月25日
    瀏覽(91)
  • C++ 默認(rèn)參數(shù)與引用傳遞:語(yǔ)法、用法及示例

    在 C++ 中,函數(shù)參數(shù)可以擁有默認(rèn)值。這意味著,在調(diào)用函數(shù)時(shí),如果省略了某個(gè)參數(shù),那么將使用為該參數(shù)指定的默認(rèn)值。 默認(rèn)參數(shù)值使用等號(hào) = 符號(hào)進(jìn)行設(shè)置,位于參數(shù)聲明的類(lèi)型之后。例如: 在這個(gè)例子中, country 是一個(gè)參數(shù),它的默認(rèn)值為 \\\"Norway\\\" 。這意味著,如果

    2024年04月15日
    瀏覽(18)
  • 【JavaScript】JavaScript 變量 ① ( JavaScript 變量概念 | 變量聲明 | 變量類(lèi)型 | 變量初始化 | ES6 簡(jiǎn)介 )

    【JavaScript】JavaScript 變量 ① ( JavaScript 變量概念 | 變量聲明 | 變量類(lèi)型 | 變量初始化 | ES6 簡(jiǎn)介 )

    JavaScript 變量 是用于 存儲(chǔ)數(shù)據(jù) 的 容器 , 通過(guò) 變量名稱(chēng) , 可以 獲取 / 修改 變量 中的數(shù)據(jù) ; 變量 的 本質(zhì) 是 存放數(shù)據(jù) 的 一塊內(nèi)存空間 ; 在 JavaScript 中, 使用 var / let / const 來(lái)聲明變量 , 每個(gè)變量都有一個(gè) 變量名 和 一個(gè) 變量值 ; JavaScript 變量聲明 : var : 使用

    2024年03月15日
    瀏覽(32)
  • html從零開(kāi)始9:javaScript簡(jiǎn)介,語(yǔ)句、標(biāo)識(shí)符,變量,JavaScript引入到文件【搬代碼】
  • 【是C++,不是C艸】 引用的概念 | 引用的使用 | 引用與指針的區(qū)別

    【是C++,不是C艸】 引用的概念 | 引用的使用 | 引用與指針的區(qū)別

    ???? 歡迎來(lái)到 Claffic 的博客 ???? ? ??? 專(zhuān)欄: 《是C++,不是C艸》?? 前言: 前面帶大家學(xué)習(xí)了函數(shù)重載等C++基礎(chǔ),這期繼續(xù)C++基礎(chǔ)的學(xué)習(xí):引用。 注: 你最好是學(xué)完了C語(yǔ)言,并學(xué)過(guò)一些初階的數(shù)據(jù)結(jié)構(gòu)。 (沒(méi)有目錄) ヽ( ̄ω ̄( ̄ω ̄〃)ゝ? 不知道大家聽(tīng)沒(méi)聽(tīng)過(guò)這個(gè)梗

    2024年02月03日
    瀏覽(18)
  • Java和C++中的引用概念

    Java中的引用 在Java中,所有的對(duì)象都是通過(guò)引用來(lái)訪問(wèn)的。這些引用類(lèi)似于C++中的指針。當(dāng)你創(chuàng)建一個(gè)對(duì)象時(shí),Java會(huì)在堆內(nèi)存中為該對(duì)象分配空間,并返回一個(gè)指向該對(duì)象的引用。你可以使用這個(gè)引用來(lái)訪問(wèn)和操作對(duì)象。 例如: java Person person = new Person(\\\"John\\\"); 在這個(gè)例子中

    2024年02月05日
    瀏覽(23)
  • 「速通Shell」嵌點(diǎn)入線,Shell變量引用詳解

    上一篇我們了解了Shell變量的定義和分類(lèi),對(duì)不同變量類(lèi)型的特點(diǎn)和作用有了初步認(rèn)識(shí),今天我們將講述Shell編程中變量該如何引用,將其融入到shell語(yǔ)句中,并進(jìn)行相關(guān)操作。 Shell變量引用是指在Shell腳本中,使用變量名來(lái)獲取該變量存儲(chǔ)的值的過(guò)程。在Shell腳本中,使用變量

    2024年02月03日
    瀏覽(22)
  • 史上最詳細(xì)的vite引入scss全局變量詳解

    我們經(jīng)常因?yàn)槟承┳兞坎荒苋忠攵^疼如麻,尤其是在做一些統(tǒng)一樣式的時(shí)候,簡(jiǎn)直是噩夢(mèng),而且網(wǎng)上亂七八糟的文章很多很多,但是真正教你配置的沒(méi)幾個(gè),因?yàn)楹芏喽际菑?fù)制過(guò)來(lái)的,有些人為了趕時(shí)間隨便復(fù)制一下,這里將為你提供史上最詳細(xì)的引入流程 第三步:創(chuàng)

    2024年02月16日
    瀏覽(32)
  • 【C++】C++ 引用詳解 ⑦ ( 指針的引用 )

    【C++】C++ 引用詳解 ⑦ ( 指針的引用 )

    指針的引用 效果 等同于 二級(jí)指針 , 因此這里先介紹 二級(jí)指針 ; 使用 二級(jí)指針 作為參數(shù) , 可以實(shí)現(xiàn)如下功能 : 動(dòng)態(tài)內(nèi)存管理 : 借助二級(jí)指針 , 可以在函數(shù)中分配或釋放內(nèi)存 ; 如 : 創(chuàng)建一個(gè)動(dòng)態(tài)數(shù)組或調(diào)整現(xiàn)有數(shù)組的大小 , 在函數(shù)中需要一個(gè)指向指針的指針作為參數(shù) , 以便修

    2024年02月11日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包