C++學習之const指標和多維陣列
這裡的指標和後面講的多維陣列沒有任何關係,之所以放在一篇文章中是因為,兩個的內容都很少。
const int *p1; 表示指標p1指向的內容是不可改變的
int *const p2; 表示指標地址是不可改變的
const int *const p3; 表示指標的地址和內容都不可改變
有關const定義的量裡,不可改變的是頂層const,可改變的是底層const。
const變數作為函式形參:
通常,函式 void func(const int &i);對於不需要改變的值,我們將它定義為const形式,以保證函式不會改變這個變數。
在函式過載中,void func(const int i);和void func(int i);是不可以過載的,雖然兩個函式的引數型別不同,但是當我們用實參初始化形參時,編譯器會自動忽略頂層const。也就是說,當形參有頂層const的時候,傳給它常量物件和非常量物件都是可以的。而你呼叫func(int i)時也能傳入非常量物件,這時編譯器就無法區分你到底是想要呼叫哪一個func函數了。
注意:可以使用非const物件來初始化一個底層const,但是不能用const物件初始化一個非const物件。如:
int i;
const int &r = i;
const int *p = &i;
int *q = p; //wrong !
int &r1 = r; //wrong !
總之就是不能把一個const變數賦值給一個非const變數!!
多維陣列:int a[3][4],這個好理解,實際上二維陣列就是陣列組成的陣列,在這裡a中一共有三個元素,每個元素都是一個長4的陣列。
int aa[10][20][30]表示陣列aa有10個元素,每個元素長20,這20個的長度中,每個都有30個元素。這樣說不是很清楚,來換一種思想:共有10個父親節點,這10個父節點均有20個孩子節點,每個孩子節點又都有30個子節點
相關推薦
C++學習之const指標和多維陣列
這裡的指標和後面講的多維陣列沒有任何關係,之所以放在一篇文章中是因為,兩個的內容都很少。 const int *p1; 表示指標p1指向的內容是不可改變的 int *const p2; 表示指標地址是不可改變的 const int *const p3; 表示指標
指標和多維陣列(C Primer Plus)解釋
討論最簡單的二維陣列形式: int array[4][2]={{2,4},{6,8},{1,3},{5,7}}; 1. 我們知道,陣列名同時代表陣列首元素的地址。array 是這個二維陣列的名字,array 也是這個二維陣列的首元素的地址。 注意array 這個二維陣列
圖解c/c++多級指標與“多維”陣列
本文來源於https://www.cnblogs.com/chenyangyao/p/5222696.html,複製發表僅便於個人學習。 宣告:本文為原創博文,如有轉載,請註明出處。若本文有編輯錯誤、概念錯誤或者邏輯錯誤,請予以指正,謝謝。 指標與陣
C++陣列和指標,多維陣列
陣列不是指標,陣列名的值是一個指標常量。 依據《c和指標》《c專家程式設計》上的例子,來總結一下。 int array[10]; int *ap =array + 2; 然後會有以下例子: 在c/c++中,array[2],2[array]是一樣的,源自於同
C語言陣列篇(五)多級指標和二維陣列指標的區別
多級指標 以二級指標為例 二級指標的由來是 指標陣列 的指標形式. int *p[10] 讀取的順序是 p[10] --> 10個空間的陣列 * p[10] --> 這10個空間的數組裡面存放的資
C++學習之分支語句和邏輯運算子(if語句、邏輯表示式、字元函式庫(cctype)和?:運算子)
1.當C++程式必須決定是否執行某個操作時,通常使用if語句來實現操作。if有兩種格式:if和if else. if(test-condition) statement 如果測試條件為true,則if語句將載入程式執行語句或語句塊;如果條件是false,程式將跳
C++學習之分支語句和邏輯運算子(switch語句,break和continue語句)
1.switch語句 switch(integer-expression) { case label1:statement(s) case label2:statement(s) ....... default :statement(s
c++學習之new int()和new int[]的區別
new int[] 是建立一個int型陣列,陣列大小是在[]中指定,例如: int * p = new int[3]; //申請一個動態整型陣列,陣列的長度為[]中的值 new int()是建立一個
C++學習之“智慧指標”
寫在前面 1.為什麼需要智慧指標 2.智慧指標的使用及原理 3.各種版本的智慧指標瞭解及實現 auto_ptr: c++ 98 (管理權轉移) unique_ptr: c++11 (防拷貝) scoped_ptr: boost庫 (防拷貝) shared_ptr: c++11 (共
c++學習筆記(13) 繼承和多型
繼承:從已有的類派生出新類 基類和派生類 不同的類之間可能有很多共通的屬性和行為,這些屬性和行為允許在一個類中通用化並被其他類所共享。類C1從類C2擴充套件而來,則C1稱為派生類,C2稱為基類,基類也稱為父類或者超類,派生類稱為子類,一個子類繼承了其父類所有可訪問的資料域和函式。同時可以增加
c++繼承之多重繼承和多繼承
多重繼承 概念 多重繼承是一個類的父類也有父類。 多重繼承的物件初始化方式最高的父類到子類。 A()–>B–>C() 銷燬時正好是初始化的反順序。 ~C–>~B–&
python學習之使用UDP和多執行緒實現一個群聊天室
在學習UDP的時候,想著試一試能不能搞一個命令視窗的udp聊天工具,因為udp的廣播機制,所以就想著乾脆直接搞一個群聊的吧。不過最後搞來搞去,命令視窗下使用多執行緒,沒有做出什麼好看整潔的“圖形化”介面,湊合著用吧,畢竟是一個練習的學習型的小玩意。有時間把列印
c 學習體會 使用 ref 和 out 傳遞陣列(downmoon)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
“全棧2019”Java第三十一章:二維陣列和多維陣列詳解
難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第三十一章:二維陣列和多維陣列詳解 下一章 “全棧2019”Java第三十二章:增強for迴
圖解陣列指標與多維陣列(附:為什麼指標加一,地址不一定加一)
這裡不是單純討論什麼是陣列指標,什麼是指標陣列,而是在掌握了一些知識後再回頭看看陣列指標與陣列到底怎麼理解。(陣列指標:指向陣列的指標。指標陣列:指標構成的陣列) 先放上一道題: 答案是10,20,30。 雖然是很常見的題,對於一個剛開始學C語言可能就可以做出來,但
vector中儲存指標 和 二維陣列動態分配記憶體
int num = 2; vector<int*> v(16); v.push_back(NULL); v.push_back(&num); v.push_back(NULL);
【 C 】作為函式引數的多維陣列
我們都知道一維陣列作為函式引數的情況,作為函式引數的一維陣列名——實際傳遞的是指向陣列第一個元素的指標。 多維陣列名作為函式引數的傳遞方式和一維陣列名相同——實際傳遞的也是指向第一個元素的指標。 但是,兩者之間不同的是,多維陣列的每個元素本身就是另外一個數組,(例如二位陣
二級指標和二維陣列詳解(轉)
一個函式形如: void f(float **p){ /* 想要在函式體中按二維陣列的方式訪問*/ p[1][1] = 0;//c++用vc編譯ok,執行出錯(非法訪問) } float **p; //其實這裡的p並不是一個二位陣列的指標,只不過是一個指向指標的指標 像你這樣訪問肯定是
PHP[多維陣列轉字串]和{多維陣列轉一維陣列}
/** * @method 多維陣列轉字串 * @param type $array * @return type $srting * @author yanhuixian */ function arrayToString($arr) { if (is_array($ar
C語言:使用指標操作二維陣列
任務程式碼: (1)用指向二維陣列元素的指標: #include <stdio.h> int main( ) { int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p; for(p=a