指標基礎知識 ,破壞指標陣列的討論,

2021-07-10 13:49:28 字數 963 閱讀 6959

int * a;

* a = 12;

a 未被初始化,不知道指向**有,可能指向乙個合法位址,把12儲存到a所指的記憶體位置,可能就篡改乙個合法的值。

它是乙個特殊的指標,表示不指向任何東西。

使乙個指標變數為null,可以賦乙個零值。

但是需要注意的是,對乙個null指標解引用是非法的,所以在對指標解引用之前要確定它非乙個null指標。

a = b+25;

a 是乙個左值,它可以標示乙個可以儲存結果值的地點,

b+25是個右值,它指定了乙個值。

b+25 = a;

b+25 不能作為左值,無法**該結果會儲存在什麼地方,未標示乙個特定的位置。字面值常量不能作為左值

//版本一

#include

#define true 1;

#define false 0;

int find_char( char **strings,char

value)

}return false;

}

//版本二

#include

#include

#define true 1;

#define false 0;

int find_char( char **strings,char

value)

}}

char ** 是指向指標的指標,這這裡看做是指標陣列,陣列中的元素是指向char的指標,而且都是指向各個字串的首位址。

版本一中,通過中間指標string++來訪問每個字串的元素,只是將每個字串的指標做乙份拷貝,而strings中每個指標依然指向每個字串的首位址,可以查詢多次。

版本二中,(*strings)++改變了strings陣列的指標的位址,不再指向每個字串的首位址,相當於破壞了指標陣列,只能查詢一次。

陣列和指標基礎知識

本節主要學習了陣列和指標 1.首先介紹陣列的概念 陣列 型別相同的數值集合 一般格式 int arr n 如例一。1.2.如何使用 首先用 for 迴圈初始化陣列 1.3數 組 名 的 含 義 arr 1 sizeof arr sizeof arr 0 分別為 陣列首位址加一 求陣列記憶體大小 求陣...

指標基礎知識

那麼編譯器就在記憶體中開闢1個整型單元存放變數a,我們假設這個整型單元在記憶體中的位址是 0x1000 那麼記憶體0x1000單元中存放了資料10,每次我們訪問a的時候,實際上都是訪問的0x1000單元中的10.現在定義 int p p a 當編譯器遇到語句int p時,它也會在記憶體中給指標變數p...

指標基礎知識

指標的基礎知識 一 空指標的定義方法 int p1 nullptr int p2 0 include int p3 null int c 0 int p4 c 此種方法是錯誤的,不能將int型變數直接賦值給指標,即使其值是0也不行這三種方法定義的空指標是等價的,只是第三種需要包含標頭檔案cstdli...