c++之引用和指標的區別和聯絡
區別:
1 引用不能為空(必須初始化),指標可為空。
int &a; // error
int *a; // ok
2 引用關係一旦被建立,則不能被解除,而指標可以指向別人。
int x = 1, y = 2;
int &a = x;
a = y; // x = y = 2
執行後,x=2, y=2
int x = 1, y = 2;
int *a = &x;
a = &y;
執行後,x=1, y=2
聯絡:
其實,引用的實現就是const型別的指標!但是c++不讓你知道這個指標的地址
因此:
int &*p // error, 不允許使用指向引用的指標
int *x = NULL;
int *&p=x; // 合法,P捆著的變數是int型的指標
void f(int &x){}; 不可傳入 f(3*i),而void f(const int &x)可傳入f(3*i),可見,i*3是作為一個const型的臨時變數存在記憶體中。
相關推薦
c++之引用和指標的區別和聯絡
區別: 1 引用不能為空(必須初始化),指標可為空。 int &a; // error int *a; // ok 2 引用關係一旦被建立,則不能被解除,而指標可以指向別人。 int x = 1, y = 2; int &a = x; a = y;
C#之淺談虛方法和抽象方法的區別
C# 虛方法 抽象方法 多態 抽象類:有時我們表達一些抽象的東西,它是一種概括,不需要它成為一種實體,所以面向對象便有了抽象類。具體來講:一個員工,它屬於一個公司,但是公司只是一個名稱,我們不需要它成為一個實體,所以公司就是一個抽象類。何時必須聲明一個類為抽象類?(面試題)當這個類中包含抽象方
C#中結構體和類區別和聯絡
結構體 結構體定義 結構體是一種值型別,通常用來封裝小型相關變數組。例如座標或者商品的特徵。 結構體是一種自定義的資料型別,相當於一個複合容器,可以儲存多種型別。 結構體由結構體成員構成,結構體成員包含欄位,屬性與方法 結構體建
C++之友元函數和友元類
res con 形參 display tle private 一點 second main 通過friend關鍵字,我們可以將不屬於當前類的一個函數在當前類中加以聲明,該函數便可以成為當前類的友元函數。#include<iostream>using namesp
C++之靜態成員變量和靜態成員函數
weibo ml2 ani inf ugo fmt 靜態成員 shuf sin 儻69澄h星f都綸誒73倘Bhttp://www.facebolw.com/space/2103710/following 幼捍iuvp186w諭4http://www.facebolw.co
C之三目運算符和逗號表達式(十七)
C語言 三目運算符 逗號表達式 我們經常在 C 語言中會見到三目運算符,那麽我們今天來講下三目運算符和一種特殊的逗號表達式。 首先來講下三目運算符。什麽是三目運算符呢?它的語法格式是 (a ? b : c)。三目運算符可以作為邏輯運算的載體,規則是:當 a 的值為真時
C之數組指針和指針數組(二十九)
C語言 數組指針 指針數組 我們今天來看下傳說中的指針數組和數組指針。在 C 語言中,數組都有自己特定的類型。那麽數組的類型是怎樣的呢?它是由元素類型和數組大小共同決定的。比如 int array[5] 的類型就是 int[5]。 在 C 語言中我們可以通過 type
C之數組參數和指針參數(三十一)
C語言 數組參數 指針參數 我們在前面講了在 C 語言中,數組參數會退化為指針。那麽這是為什麽呢?在 C 語言中只會以值拷貝的方式傳遞參數,當向函數傳遞數組時,不是將整個數組拷貝一份傳入函數而是將數組名看做常量指針傳數組首元素地址。 那麽當初在設立 C 語言時,主要是
Java之JSONObject存取值以及和HashMap區別, optString()和getString()區別和他的遍歷方式
結論: 1.JSONObject和HashMap用法上是一樣的,用put()方法存對於的Key-values鍵值對,取可用optString(key)和getString(key),get(key),存入的是什麼型別,取出來的時候就是什麼型別 2**.optString()在沒找到k
KEIL、uVision和MDK區別和聯絡
--------------------------------------------- -- 時間:2018-11-26 -- 建立人:Ruo_Xiao -- 郵箱:[email protected] ----------------------------------------
Java 的equals()方法 和 == 的區別和聯絡
淺談Java中的equals和== 在初學Java時,可能會經常碰到下面的程式碼: String str1 = new String("hello"); String str2 = new String("hello"); System.out.print
關於union和join區別和聯絡
union和join是需要聯合多張表時常見的關聯詞,具體概念我就不說了,想知道上網查就行,因為我也記不準確。 先說差別:union對兩張表的操作是合併資料條數,等於是縱向的,要求是兩張表字段必須是相同的(Schema of both sidesof union should match.)。也就
Python pip 和pip3區別 聯絡
python 有python2和python3的區別 那麼pip也有pip和pip3的區別 大概是這樣的 pip是python的包管理工具,pip和pip3版本不同,都位於Scripts\目錄下: 如果
後端---Java中ArrayList和LinkedList區別和聯絡
ArrayList和LinkedList的區別和聯絡 在一個多月之前,我曾寫過一篇部落格想要迅速簡潔的瞭解Java中所有的集合型別(List、Set、Map),然後一個月多後的我不得已又抱起《Java核心卷I 》仔細研讀,這是為什麼呢??? 是因為“溫故而知新”還是因為“書讀百遍其
【C語言】函式指標陣列和指向函式指標陣列的指標
一、函式指標陣列1.1函式指標陣列的宣告 函式指標陣列的宣告如下,所謂函式指標陣列就是在之前的函式指標的基礎上增加了[],由於[]的優先順序高於*,故 pf先與[]結合,說明它是一個數組,再與*結合說明陣列中的元素的型別是指標,再看後面的引數列表,說明每一個指標都指
C語言中的指標陣列和陣列指標
可以將 *string看成陣列 a[] 下的a,即指標是指向陣列的首地址的; 指標陣列是陣列元素為指標的陣列(例如 int *p[3],定義了p[0],p[1],p[2]三個指標),其本質為陣列。 指
Bagging演算法和Boosting區別和聯絡
參考文章連結:http://www.cnblogs.com/liuwu265/p/4690486.html Bagging和Boosting都是將弱分類器組裝成強分類器的方法 備註:弱分類器也是有一定限制的起碼分類效果要比隨機分類效果好,即準確率要大於50%, 否則即使
C++之物件的動態建立和釋放
new和delete的用法: 1)在軟體開發過程中,常常需要動態地分配和撤銷記憶體空間,例如對動態連結串列中結點的插入與刪除。在C語言中是利用庫函式malloc和free來分配和撤銷記憶體空間的。C++提供了較簡便而功能較強的運算子new和delete來取代m
Learning C++ 之1.8a 命名衝突和std空間
假如你第一次開車去你朋友家,朋友給了你一個地址:205 Front Streat in Mill City。直到到了Mill City,你開啟地圖發現有兩個205 Front Streat,這個時候就不知道到哪裡去了。除非有一些其他的資訊來幫你輔助定位。因此你需要打電話給你的
C++類中的指標成員和拷貝建構函式
對C++程式設計師來說,編寫C++程式有一條必須注意的規則,就是類中包含了一個指標成員的話,那麼 就要小心拷貝建構函式的編寫, 因為一不小心,就會出現記憶體洩漏。 看下面的例子: #include <iostream> class HasPtrMem { pu