c 指標是乙個用數值表示的位址。因此,您可以對指標執行算術運算。可以對指標進行四種算術運算:++、--、+、-。
ptr++
在執行完上述的運算之後,ptr 將指向位置 0x1004,因為 ptr 每增加一次,它都將指向下乙個整數字置,即當前位置往後移 4 位元組。這個運算會在不影響記憶體位置中實際值的情況下,移動指標到下乙個記憶體位置。如果 ptr 指向乙個位址為 0x1000 的字元,上面的運算會導致指標指向位置 10x001,因為下乙個字元位置是在 0x1001。
為了方便,我們引入步長的概念,步長等於指標所指向的變數的記憶體大小,步長代表著指標每走一步所跳過的位元組數。
下面是一些常用的型別的步長:
//基本資料型別
cout << "基本型別" << endl;
遞增乙個指標
#include const int max = 3;
int main() ; int i, *ptr;
/* 指標中的陣列位址 */
ptr = var; for (i = 0; i < max; i++)
return 0;
}
當上面的**被編譯和執行時,它會產生下列結果:
0x8ffbfc-0x8ffbf8==4,由此可見整型指標步長為4個位元組
遞減乙個指標
同樣地,對指標進行遞減運算,即把值減去其資料型別的位元組數,如下所示:
#include const int max = 3;
int main() ;
int i;
char *ptr;
/* 指標中最後乙個元素的位址 */
ptr = &var[max - 1];
for (i = max; i > 0; i--)
getchar();
return 0;
}
當上面的**被編譯和執行時,它會產生下列結果:
0x4ffe12-0x4ffe11==1,由此可見字元型指標步長為1個位元組
指標的比較
指標可以用關係運算子進行比較,如 ==、< 和 >。如果 p1 和 p2 指向兩個相關的變數,比如同乙個陣列中的不同元素,則可對 p1 和 p2 進行大小比較。
#includeusing namespace std;
//@c語言plus
const int max = 3;
int main()
; int i, *ptr;
/* 指標中第乙個元素的位址 */
ptr = var;
i = 0;
while (ptr <= &var[max - 1])
return 0;
}
當上面的**被編譯和執行時,它會產生下列結果:
總結我們概括一下:
對於零基礎想要更輕鬆學好c/c ++開發語言,這裡也給大家準備了一套系統學習教程資源,從最零基礎開始的,幫助大家在學習c語言的道路上披荊斬棘!主頁置頂文章中有領取方式,你可以看一下
4 指標運算 每日乾貨丨C語言指標的算術運算
c 指標是乙個用數值表示的位址。因此,您可以對指標執行算術運算。可以對指標進行四種算術運算 ptr 在執行完上述的運算之後,ptr 將指向位置 0x1004,因為 ptr 每增加一次,它都將指向下乙個整數字置,即當前位置往後移 4 位元組。這個運算會在不影響記憶體位置中實際值的情況下,移動指標到下乙...
c語言指標詳解 每日乾貨丨C語言指標詳解
問題 指標是什麼?簡單來說就是我們使用指標變數,通過這個指標變數訪問該數值 請看下面的示例 int num 7 建立指標變數int p num printf d n p 在上述 中,可以看出指標變數宣告的方法及如何建立指標 指標變數的宣告 宣告指標時型別一定要相同,避免一些錯誤 型別 指標變數名 變...
C語言 指標的算術運算
一 指標加法 1 指標 1 1 加乙個位元組 2的16進製表示 ox 00000002 20的16進製表示 ox 00000014 ox 0000140a 轉化為十進位制為 5130 2 加乙個單元格 直接arr 1 20 3 加整個陣列 沒意義,直接跳出了陣列 綜上指標 1表示加乙個單元格最為合適...