指標的算術運算

2021-06-22 05:16:59 字數 1532 閱讀 5962

指標可以加上或減去乙個整數的算術運算。

首先來看個例子:

#include int main(void)

; short st[3]=;

double * pw=wa;

short * ps=&st[0];

cout<<"pw= "<

分析上面的程式,我們可以看到,c++一般把陣列名和第乙個元素的位址等價,所以我們可以用上面的兩種方法初始化指標,接著我們把pw加一,我們知道pw是乙個指向double型的指標變數,從第二個pw的輸出,得到位址值加了8個位元組,於是輸出的是陣列第二個元素的值,接著也將ps加1,ps也指向了第二個元素,由於ps為指向short型別的指標變數,short占用2個位元組,因此指標加1時,其值只增加2.接著後面的程式表明st[1]與*(st+1)都是表示陣列st的第二個元素,即:c++中比較常用

arrayname[i]=*(arrayname+i);

pointername[i]=*(

pointername+i);

陣列名一般是常量,不能進行運算,而指標名一般是指標變數可以運算例如:pointername=pointername+1;

最後我們還可以發現,對陣列引用sizeof運算得到的是陣列的長度,而對指標應用sizeof得到是指標的長度,即使指標指向的是乙個陣列。

再看乙個例子:

#include using namespace std;

int main()

{ int a[5];

int i;

int *p;

for(i=0; i<5; i++)

cin>>a[i];

cout<

會發現3種方式輸出的結果是一樣的。

注意:指標變數加1後,其增加的值等於指向的型別占用的位元組數。

總結

指標可以和整數進行加減運算,但是跟一般的加減運算不同,指標的加減運算跟指標的型別密切相關,例如,char型指標p和整數3,p+3表示p所指位址後面第3個字元的位址,p-3就表示p所指位址前面第3個字元的位址。給大家乙個更直接的例子,有整型陣列int a[5],p指向陣列首位址a,則a+3表示首位址後第3個整數的位址,即a[3]。

「指標++」和「指標--」表示指標所指位址的下乙個或前乙個資料的位址。

指標的算術運算一般都是在運算元組的時候進行,因為只有宣告陣列才可以得到連續的記憶體空間。如果我們對乙個單獨的變數位址進行加或減的算術運算,然後改變新位址的值,則可能會破壞該位址的資料,所以在對指標進行算術運算時要明確運算的結果是程式中分配可用的位址。

指標的關係運算說的是相同型別的指標之間的關係運算。不同型別的指標之間的關係運算沒有任何意義,指標和非0整數的關係運算也沒有任何意義,但是指標可以和0進行關係運算,兩個相同型別的指標相等,表示這兩個指標指向同乙個位址。

指標的算術運算

指標和陣列 指標和陣列在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位元組...

指標的算術運算

指標 1 1同理 給定乙個陣列,陣列指標 1可能表示為三種情況 1.加乙個位元組 程式出錯 2.加整個陣列 這個操作完全沒意義。3.加乙個單元格 乙個單元格幾個位元組是根據定義的指標的型別來定的,例如char,指標加1就是乙個位元組,即乙個單元格。總結 指標加法需要調整 加1單元格 調整的權重為指標...