指標和引用作為形參的區別
引用做函式的形參:在函式內部,對這個形參做任何操作,相當於對實參做相同的操作。
指標做函式的形參:在函式內部,只有在這個形參的值沒有變化的情況下,對其所指向的內容做任何操作,才相當於對實參所指向內容做的操作。而對這個指標本身做的操作只是這個形參(實參的副本)自己有變化,而不會影響實參指標,也不會影響實參所指內容。比如給這個形參做算術運算、用malloc在堆中動態分配記憶體等,只是這個指標的值變了,那麼它指向的記憶體也就和實參所指記憶體不同了。
PS:引用在定義時不可加const,否則編譯出錯,在形參前面則可以加const以確保在函式中該變數不會被修改。
以下是引用變數和指標變數的部分區別:(1)引用被建立的同時必須被初始化(指標則可以在任何時候被初始化)。
(2)不能有NULL 引用,引用必須與合法的儲存單元關聯(指標則可以是NULL)。
(3)一旦引用被初始化,就不能改變引用的關係(指標則可以隨時改變所指的物件)。
相關推薦
指標和引用作為形參的區別
引用做函式的形參:在函式內部,對這個形參做任何操作,相當於對實參做相同的操作。 指標做函式的形參:在函式內部,只有在這個形參的值沒有變化的情況下,對其所指向的內容做任何操作,才相當於對實參所指向內容做的操作。而對這個指標本身做的操作只是這個形
指標和引用 作為函式引數
*和& * * 有兩個作用,一個是作為識別符號來表示這是一個指標(宣告變數時的等號左邊),也就是說存放的是地址,另外一個是作為運算子來取值(賦值等號左邊)。 int *p=NULL; int a = 1; p = &a; cout<<p<<
指標和引用、陣列的區別
指標和引用的區別 指標儲存的是所指物件的地址,引用是所指物件的別名,指標需要通過解決引用間接訪問,而引用是直接訪問; 指標可以改變地址,從而改變所指的物件,而引用必須從一而終; 引用在定義的時候必須初始化,而指標不需要; 指標有指向常量的指標和指標常量,而引用沒
指標和引用作為函式傳遞引數
引用傳遞 void OutputNumber(int &nNumber) //設定引用型別引數 { cout << nNumber << endl;
C++中引用作為形參的作用
引用的申明方法:型別識別符號 &引用名 = 目標變數名; 注:1.&在此不是求地址運算,而是起標識作用 2.型別識別符號是指目標變數的型別 3.申明引用時必須同時對
引用和指標作為形參的區別
int n; int &m = n; 在C++中,多了一個C語言沒有的引用宣告符&,如上,m就是n的引用,簡單的說m就是n的別名,兩者在記憶體中佔同樣的位置,不對m開闢新的記憶體空間,對m的任何操作,對n來說是一樣的。 對於引用,有以下三條規則: (1)
指標陣列和行指標作為形參時的區別
用指標陣列作為形參時的表示方法: #include <stdio.h> void fun(int *p[3],int n) { int i,j; for(i=0;i<3;i++) for(j=0;j<n;j++) printf("%d
函式返回值作為形參存在的問題以及形參和實參的區別
一、問題描述 若已定義的函式有返回值,則以下關於該函式呼叫的敘述中錯誤的是( D ) (A)函式呼叫可以作為獨立的語句存在。 (B)函式呼叫可以作為一個函式的實參。 (C)函式呼叫可以出現在表示式中。 (D)函式呼叫可以作為一個函式的形參。 解析:函式返回值存在暫存器
習題 9.8 修改第6題的程式,增加一個fun函式,改寫main函式。改為在fun函式中呼叫change和display函式。在fun函式中使用物件的引用(Student &)作為形參。
C++程式設計(第三版) 譚浩強 習題9.8 個人設計 習題 9.8 修改第6題的程式,增加一個fun函式,改寫main函式。改為在fun函式中呼叫change和display函式。在fun函式中
函式中的形參問題(指標形參、引用形參、二重指標作為形參)
(1)用指標傳遞引數,可以實現對實參進行改變的目的,是因為傳遞過來的是實參的地址,因此使用*a實際上是取儲存實參的記憶體單元裡的資料,即是對實參進行改變,因此可以達到目的。在使用的過程中需要通過對地址的解引用來操作其所指向的變數,同時可以通過指標的自增自減移動從而改變所指向
java中,方法參數是基本類型和引用類型的區別
關系 傳遞 類型 參數 變量 找到 外部 內存地址 chan 方法參數是基本類型時,傳遞的是值。 方法參數是引用類型時,傳遞的是內存地址值 當參數是基本類型時,在調用方法時將值傳遞到方法中,運行方法,運行結束方法退出,對原本main中定義的變量沒有任何操作(方法中沒有re
5、【C++】指標/引用(指標和引用的區別)
一、指標 int p=12; int *q; int *q=&p; 這裡p為int型別的變數,&p就是p的記憶體地址,*q是一個int型別的變數(是一個值),q為指標是地址,int q=&p;把p的地址賦給了指標q,所以q就
使用常量引用形式,將map作為形參傳遞時的問題
void test(const unordered_map<int,int> &um){ if(um[1]){ //一段測試程式碼 } } 上述程式碼將不能通過編譯。 原因:map的[]運算子會在索引項不存在的時候自動建立一個物件,而常量不能改變。 解
C++中一般引用作形參和常引用作形參的問題
#include<iostream> using namespace std; int f(const int &a){return a;} int g(int &a){return a;} int h(int a){return a;} int ma
C++中指標和引用的區別、以及引用和取地址符&的區別
一. 指標和引用的區別 對於指標來說,它是一個地址,這個地址是一個數值,那麼就意味這個數值可以為0(空指標),也可以為其他,即指標可以不指向任何東西。 而對於引用來說,他是一個外號,外號一定是“某個存在物體”的外號,所以引用不能為空,即不能存在空引用。例如我們給小明起了個外號:明明,那我們說
初夏小談:C++中“指標”和“引用“”的區別
1.引用只能繫結一個實體,而指標可以指向不同實體2.使用指標時要判空,而引用不需要因此更安全3.引用在定義時必須初始化,指標不做要求4.在sizeof中:引用結果是引用型別的大小,但指標始終是地址空間所佔位元組個數 void Size() { long long x =
指標和引用的區別
引用 引用是給另外一個變數起的別名,所以引用不會分配記憶體空間 引用和指標的區別 1.指標是一個實體,需要分配記憶體空間。引用只是變數的別名,不需要分配記憶體空間。 2.引用在定義的時候必須進行初始化,並且不能改變,指標定義時候之後也可以改變指向。 所以指標有判
C++指標和引用的區別與聯絡
1.指標和引用的定義和性質區別: (1)指標是一個變數,只不過這個變數儲存的是一個地址,指向記憶體的一個儲存單元; 而引用跟原來的變數實質上是同一個東西,只不過是原變數的一個別名而已。 (2)可以有const指標,常量指標可以改變指向,指標常量
String作為形參傳遞改變內容和在方法中改變內容
對於String的不可變性 有兩種情況 第一種: 如圖 當String作為形參傳遞到方法裡的時候,實際上傳遞的是str引用的拷貝,改變的是str引用的拷貝,而後方法結束,形參str被銷燬, 原str的引用保持不變,還是指向還是指向原方法區的""12345
C++總結1——指標和引用/陣列的區別【轉】
1.指標和引有什麼區別?(從反彙編角度回答) a.其實引用和指標本質上是一樣的,他們的彙編指令都是兩行。 int a = 10; int *p = &a; //lea eax,[a] 將a的地址放在