普通的數學數字都可以進行基本的算數運算,那麼指標也是也代表一種數字,它是否也可以進行基本的算術運算?1、指標加數字。
指標的加法,我們先定義乙個整型陣列arr,再定義乙個整型指標*p,讓p儲存arr首位址的值,int *p=arr;
int arr[10] = ;
int *p = arr;
我們讓p+1;則有下面三種情況
(1)、假設p+1加的是整個陣列。
如果*p加的是一整個陣列,我們給p+1,則*p就指向了arr外的位址,將變得毫無意義。(2)、假設p+1加的是乙個位元組。如下圖所示
p+1加整個陣列,*p就指向了陣列之外
所以很顯然指標p+1加的不是整個陣列。
在陣列arr中乙個單元格佔4個位元組,如果p+1是指p現在所指向的位元組位址加一,則執行以下語句時就會出現這種情況(3)、假設p+1加的是乙個陣列單元格。*p指向arr的首位址,將10的值賦值給arr[0],然後p+1,
再將20放在*p現在所指的位置
arr[0]的值將會變成0x00000a14,arr[2]的值將會變成0,顯然這樣指標運算將會變得異常複雜,這不是我們想要的結果。
假設指標p+1是指指標所指的單元格加一,我們就可以通過指標加一來訪問目前指標所指陣列中元素的下一位元素,就可以通過以下語句將arr[0]賦值成10,將arr[1]賦值成20。2、指標減數字。如圖所示*p = 10;
p++;
*p = 20;
顯然這就是我們想要的結果。由以上結論得出指標加一是指指標所指陣列的單元格加一。
與指標加數字相同,p-1就是指*p所指的單元格減一,如下所示3、指標減指標。
既然指標加數字表示的是指標所指陣列的格仔數加一,那麼指標減指標就是指兩個指標之間的格仔數(指標相減只能在同乙個陣列的兩個指標)。4、指標加指標。
指標加指標沒有任何意義。總結:以上示例皆是以int型進行,指標的運算還需要進行調整,調整的權重為sizeof(指標去掉乙個*)。以指標加數字為例
指標的算術運算
指標可以加上或減去乙個整數的算術運算。首先來看個例子 include int main void short st 3 double pw wa short ps st 0 cout pw 分析上面的程式,我們可以看到,c 一般把陣列名和第乙個元素的位址等價,所以我們可以用上面的兩種方法初始化指標,...
指標的算術運算
指標和陣列 指標和陣列在c語言中有錯綜複雜的聯絡。在前面的課程中,你學會了如何宣告陣列變數 int anarray 5 declare array of 5 integers 關聯陣列實際上是指標,指向陣列的第乙個元素!因為陣列變數 是指標,你可以解析它 它返回 陣列元素0 123 4567 int...
指標的算術運算
指標的算術運算 c語言允許你在指標執行整數的加減運算。如果pnptr指向乙個整數,pnptr 1 pnptr後在記憶體中的位址的下乙個整數。pnptr 1是在pnptr以前的整數字址。請注意,pnptr 1不在pnptr返回位址,但下乙個物件,pnptr分型。如果pnptr指向乙個整數 假設4位元組...