可以看到,i1的記憶體位址與p1的值相同, 而p1的位址又是在一塊單獨的記憶體位址儲存。
而 * 就是解引用 解析並返回記憶體位址中儲存的值。
比如我們要取上面p1指向記憶體的值就用以下方法來取。
printf("取指標指向記憶體的值 p1:%d\n", *p1);
指標運算:對指標進行算術運算。
c語言中的陣列其實就是一塊連續的記憶體,這裡我們通過陣列來展示指標的運算
陣列指標
在c語言中,指標和陣列名都表示位址
1、陣列是一塊記憶體連續的資料。
2、指標是乙個指向記憶體空間的變數。
//陣列指標 陣列的指標
int array2[2][3] = , };
//陣列指標 int[3] 型別的指標
int (*array2_p2)[3] = array2;
//直接取值獲取的是陣列中第乙個元素 11
printf("array_p2值: %d\n", *array2_p2);
// 如果想取 22
printf("array_p2值: %d\n", *(*array2_p2 +1));
//如果想取55則
printf("array_p2值: %d\n", *(*(array2_p2+1) +1));
為什麼那樣獲取55呢?
//拆分
//1、 指標偏移 因為array1的型別是3個int的陣列 所以 +1 移動了12位
array2_p2+ 1
//2、獲得陣列 (*(array2_p2 + 1))[1] = 55
(*(array2_p2 + 1)
//3、對陣列執行 +/- 相當於隱式的轉為指標
//獲得 55 的位址 再解位址
*(array2_p2+ 1) + 1
這裡我們就講完指標了。
指標的算數運算
1.位元組數 char short int float double long longlong 位元組數 1 2 4 4 8 4 8 2.指標 1,計算指標 1具體加幾個位元組的方法是,給指標去掉乙個型號,讓後用sizeof 求出位元組大小 int p 整形指標變數 p 1,加4位元組 sizeo...
指標的算數運算
我們知道指標也是一種變數,既然是變數理論上便可進行算數運算,今天我們來一起 一下指標的算術運算。printf d,d n 0xa,0x0000000a int arr 10 int p arr p 10 p 大家看一下這串 思考一下這裡面的p 是加的什麼呢?這個p 意思是加乙個單元格,我們知道指標是...
指標的算數運算
指標加法 指標 1 可能出現的情況 加整個陣列 加1個位元組 加1個單元格 討論第1種情況 加整個陣列無現實意義,不可取。討論第2種情況 int arr int p arr p 10 p p 20 printf d,d n arr 0 arr 1 整形陣列乙個單元格佔四個位元組,將10轉化成十六進製...