1. &ch 代表什麼?
答:變數ch的位址
2. pch 代表什麼?
答:pch是char型別指標,指向ch。
3. &pch 代表什麼?
答:指標變數的位址
4. *pch 代表什麼?
答:對指標變數pch進行解引用,間接訪問了ch的值。
5. *pch + 1 代表什麼?
答:間接訪問操作,取得的拷貝值加一,(*pch + 1)為『b』。
6. *(pch + 1)代表什麼?啊、
答:訪問到了ch之後的下乙個位址上的內容。
7. ++pch 代表什麼?
答:假設當為右值,那麼應該是先遞增,後傳位址。
8. *++pch 代表什麼?
答:假設當為右值,那麼應該是先遞增,後通過位址間接訪問。
9. *pch++ 代表什麼?
答:假設當為右值,那麼應該是先通過位址間接訪問,後遞增。
10. ++*pch 代表什麼?
答:對pch指向的值加一。可以看成這樣,++(*pch)。
11. (*pch)++ 代表什麼?
答:假設為右值,先將pch指向的值傳給左值,然後對拷貝回來的值進行遞增。
12. ++*++pch 代表什麼?
答: ++(*++pch)這樣的話就可以看的比較的清楚了。
13. ++*pch++ 代表什麼?
答: ++(*pch++)參考第九個問題即可。
現在,該是將資料和指標的淵源的時候了。先看以下**:
int a[10]; // 定義了乙個長度為10,int型別的陣列int *pa; // 定義了乙個int型別的指標pa = a; or pa = &a[0];
上面的**說明了這麼幾個事情:
① 陣列名代表了本陣列第乙個元素的位址。
② 這個事情要用圖來表示:
以上這些小內容只是開胃菜,真正的大餐在後面會慢慢上來!!
1. 字元指標
字串常量是乙個字元陣列。如:」i love you!「,字元陣列以「\0「結尾。此時,陣列表示字串常量和字元指標表示就有極大的區別了:
char amessage = "i love you!"; // 定義了乙個陣列
char *pmessage = "i love you!"; // 定義了乙個字元指標
它們的區別為:
這個圖看起來也好像沒有什麼比較大的區別,無非就是pmessage多了個箭頭。其實它們差別大了去了。amessage始終指向同乙個儲存位置,可以修改字串常量中的字母。而pmessage只是乙個char型別的指標,其初值指向字串的乙個常量,如果你試圖修改字串的內容時,結果就是沒有定義 。
2. 指標的運算
當指標和乙個整型量執行算術運算時,整數在執行加法運算前始終會調集成適的大小進行調整。
①. 算術運算
指標 ± 整數
這個對於陣列和用malloc函式分配的記憶體都適用。 例如以下**:
#include
int main()
for(vp = values; vp != &values[5];)
return 0;
}指標 -指標
這個只有當兩個指標都指向了同乙個陣列之後,這種減法才有實質的意義。 例如以下的**:
#include
int main()
vp1 = values;
vp2 = &values[3];
std::cout << (vp1 - vp2) << std::endl; // 顯示為-3,ptr_diff型別
return 0;
}3. 指標陣列,陣列指標,多維陣列
何為指標陣列?傳說中,陣列元素全為指標的陣列稱為指標陣列。一維指標陣列的定義形式為:「型別名 *陣列識別符號[陣列長度]」。例如 :
char *ptr_array[10]; // 指標陣列,含有10個char型別指標的陣列
// *ptr_array[i]:指向第i個文字行的首字元
大概就是這樣子了:
那麼指標陣列和陣列指標有什麼區別呢? 陣列指標是指向陣列首元素的位址的指標,其本質為指標;指標陣列是陣列元素為指標的陣列,其本質為陣列。兩者之間的區別就亮了吧。
關於多維陣列和指標陣列:多維陣列,以二維陣列為例。
char ar[3][8] = ;
char *parray[3] = ;
大概也是這個樣子:
很顯而易見,多維陣列和指標陣列有著較大的區別 。對於二維陣列而言:只要定義了乙個二維陣列,無論賦不賦值,系統都會給他分配相應空間,而且該空間一定是連續的。其每個元素表示乙個字元。我們可以通過制定下標對其元素進行修改.
對於指標陣列而言:如char *parray[3]系統至少會分配3連續的空間用來儲存3元素,表示parray是乙個3個元素的陣列,每個元素是乙個指向字元型資料的乙個指標。
在編譯器中,ar[3][8]被看成,*(*(ar + i) + j);將其看成指標形式。
4. 總結一下陣列和指標的區別與聯絡
區別:
指標陣列
間接訪問資料
直接訪問資料
儲存位址
儲存資料
動態的資料結構
存固定數目且相同型別的元素
malloc(), free()
隱式分配機制
指向匿名資料
自身即資料
聯絡:1. 表示式中陣列名被編譯器當做乙個指向該陣列的第乙個元素的指標
2. 下標總是與指標的偏移量一致
3. 在函式引數中,陣列名被編譯器當做指向該陣列的第乙個元素的指標
4. 在多維陣列中,雖然與多級指標有著不同,但是在編譯器中,還是被看成多級指標的形式。
就說到這裡吧!這一篇寫了好長的時間,寫的不好,請各位大牛指正。多謝了!
摘自 雲端小飛象cg
階 原根 指標
定義 設 使得 成立的最小的 稱為對模 的階,記為 定理 如果模 有原根,那麼它一共有 個原根。定理 若,則。定理 如果 為素數,那麼素數 一定存在原根,並且模 的原根的個數為 定理 設 是正整數,是整數,若 模的階等於 則稱為模 的乙個原根。假設乙個數 對於模來說是原根,那麼 的結果兩兩不同,且有...
二重指標指向指標陣列解析
typedef int init fnc t void 定義函式型別 init fnc t init fnc ptr 二重函式指標 init fnc t init sequence for init fnc ptr init sequence init fnc ptr init fnc ptr 函式...
struct 結構體解析(原)
一 基本概念 結構體是乙個或是多個變數的集合,這些變數可能為不同的型別,為了處理的方便而將這些變數組合在乙個名字之下。我們將關鍵字struct引入了結構宣告中。結構宣告包含在花括號內的一系列宣告組成。例如 以下是乙個巨普通的結構體,表示座標。point 為結構標記 x,y為成員。struct poi...