C++ 引用 (交換兩個數的值)
C++中引用能夠將很多問題在同級上解決,不會開闢新的空間。
在C中是沒有引用這個定義的,這也是C++中的一個特色。
通過一個swap函式來簡單的瞭解引用。
/**************************
* 通過引用交換兩個數的值
*(型別)&(變數名)=(所引用的變數)
*
* 引用就是某一變數(目標)的一個別名,對引用的操作與對變數直接操作完全一樣。
* 引用的宣告方法:型別識別符號 &引用名=目標變數名;
* 【例1】:int a; int &ra=a; //定義引用ra,它是變數a的引用,即別名
* 說明:
* (1)&在此不是求地址運算,而是起標識作用。
* (2)型別識別符號是指目標變數的型別。
* (3)宣告引用時,必須同時對其進行初始化。
* (4)引用宣告完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,
* 且不能再把該引用名作為其他變數名的別名。
* ra=1; 等價於 a=1;
* (5)宣告一個引用,不是新定義了一個變數,它只表示該引用名是目標變數名的
* 一個別名,它本身不是一種資料型別,因此
* 引用本身不佔儲存單元,系統也不給引用分配儲存單元。故:對引用求地址,就是
* 對目標變數求地址。&ra與&a相等。
* (6)不能建立陣列的引用。因為陣列是一個由若干個元素所組成的集合,所以無法
* 建立一個陣列的別名。
**************************/
#include <iostream>
using namespace std;
void swap(int &ra,int &rb)
{
ra^=rb;
rb^=ra;
ra^=rb;
}
//void swap(int *pa,int *pb)
//{
// *pa^=*pb;
// *pb^=*pa;
// *pa^=*pb;
//}
void swap(char* &p, char* &q)
{
char *t = p;
p = q;
q = t;
}
int main()
{
int a=2,b=5;
int &aa=a;//這裡的aa即為a的引用
int &bb=b;
cout<<" aa = "<<aa<<" bb = "<<bb<<endl;
swap(a,b);
cout <<" a = " << a << " b = " << b << endl;
char *p = "china";
char *q = "america";
cout <<" p = "<<p<<" q = "<<q<<endl;
swap(p,q);
cout <<" p = "<<p<<" q = "<<q<<endl;
return 0;
}
對於引用的傳值
/*
* 對於引用的表示式傳遞必須加const
* 引用的值改編會使被引用值也發生改編
*
*
*/
#include <iostream>
using namespace std;
void func1(int ref)
{
cout<<ref<<endl;
}
void func2(int &ref)//對於引用的表示式傳遞必須加const,如func3
{
cout<<ref<<endl;
}
void func3(const int &ref)
{
cout<<ref<<endl;
}
int main()
{
int a=200;
int b=100;
int &aa=a;
aa=4; //引用的值改編會使被引用值也發生改編
cout<<a<<endl;//這裡會得到4
func1(a+b);
// func2(a+b);//錯誤!
func3(a+b);
return 0;
}
相關文章
- 異或交換兩個數的值
- Swift交換兩個變數的值Swift變數
- C++ 一種交換兩個數的思路C++
- C++取反交換兩個數的值C++
- 不使用臨時變數交換兩個變數的值變數
- 交換兩個變數變數
- 交換兩個整型變數變數
- 如何不使用臨時變數,交換兩個變數的值。變數
- JavaScript實現兩個數的交換JavaScript
- 【C語言】給定兩個整型變數的值,將兩個值的內容進行交換C語言變數
- Python面試技巧-交換兩個元素的值Python面試
- C語言交換兩個變數的值的5種基本方法C語言變數
- mysql交換兩行或兩列的值MySql
- C++ 左值引用和右值引用之間的轉換C++
- 不用第三個變數,交換變數的值變數
- 【C++】兩個類的相互引用C++
- 異或運算的巧用 → 不用額外的變數,如何交換兩個變數的值?變數
- 呼叫函式實現兩個數交換函式
- 面試題-JavaScript交換兩個變數的方法面試題JavaScript變數
- 數值變數交換常用方法變數
- C++ 右值引用和左值引用C++
- C++左值引用與右值引用C++
- c++ 左值引用與右值引用C++
- Python常用的四種數值交換方式!Python
- c語言 - 交換兩個變數(不建立臨時變數)兩種方法C語言變數
- 交換兩個資料的三種方法
- C++右值引用C++
- 交換2個整形數引發的思考
- 從JVM底層原理分析數值交換那些事JVM
- 【Python有坑系列】交換兩個陣列的切片,有坑Python陣列
- Java交換map的key和value值Java
- leetcode 24 兩兩交換連結串列中的節點LeetCode
- 數倉的兩種輕量級資料交換格式:json與jsonbJSON
- c++ set容器 —構造 賦值 大小 交換 插入 刪除 程式碼示例C++賦值
- 變更性別--使用if 交換值
- leetcode 24.兩兩交換連結串列中的節點LeetCode
- LeetCode 24. 兩兩交換連結串列中的節點LeetCode
- 24. 兩兩交換連結串列中的節點 (中等)
- java基礎變數的交換Java變數