指標的運算總結

2021-06-04 15:51:43 字數 916 閱讀 3957

一、算術運算:

1、指標與證書的加減運算:(px+n,px-n)

指標作為位址量加上或減去乙個整數n,其意義是指標當前指向位置的前方或後方第n個資料的位置。由於指標可以指向不同資料型別,即資料長度不同的資料,所以這種運算的結果取決於指標指向的資料型別。

* p+n的實際操作是:(p)+n*sizeof(資料型別);

* p-n的實際操作是:(p)-n*sizeof(資料型別);

2、指標加1、減1運算:(px++,++px,px--,--px)

具有1中的計算特點,例如:  y=*px++;

該表示式中有三種運算:=、*和++。 *和++優先於=。  *和++屬於同級運算,其結合規則是從右至左。所以++運算是對px進行的。相當於 y=*(px++);

3、指標的相減運算:(px-py)

如果兩個指標px和py所指向的變數型別相同,則可以對他們進行相減運算。結果是兩指標指向的位址位置之間的資料個數。實際上就是位址計算。所以兩指標相減的結果值不是位址量,而是乙個整數。

二、關係運算:

資料在記憶體中的儲存邏輯是由前向後,那麼指向後方的指標大於指向前方的指標。

三、賦值運算:

2、把乙個指標的值賦予相同資料型別的另外乙個指標,例如: int *p,*q; p=q;

另:指標賦值區別,如果一開始只是定義,後面賦值,則是如下形式:

char a, *p; p=&a;

如果在一開始定義的時候就賦值,則是如下形式:

int a, *p=&a;

於是也可以理解了這種形式:

int n;  int *p1=&n; int *p2=p1; 因為p1只是在定義賦值的時候才是*p1=&n,如果在不是定義的時候用到p1,則p1就是代表&n,不用寫成*p1;

於是上面的形式等價於:int n;  int *p1=&n; int *p2=&n;

指標的運算

指標運算 指標演算法並不依賴於指標的型別,如果p是乙個指向char的指標,那麼p 1就指向下乙個char 算術運算 指標的算數運算只限於兩種形式 指標運算只有用於陣列中其結果才是可以 的,對於任何並非指向陣列元素的指標執行算數運算其結果是非法的 1.指標 整數 結果也是指標 這種形式只能用於指向陣列...

指標的運算

指標的運算包括 1 指標的加法 2 指標的減法 char short int long long long float double 位元組數 1 2 2 4 4 8 4 8 int不加說明為4個位元組 對指標的加法而言 指標是不能加指標的 它只能加乙個數字 比如 指標 1 加乙個單元格 需要調整 ...

指標的運算

include int main int p arr p 10 p p 20 printf d,08x n arr 0 arr 1 return 0 指標 1的含義,首先思考一下指標 1可能的幾個含義 1 加整個陣列 這種含義不太符合實際,題中要的是遍歷陣列中的數。如果是加整個陣列,那就是直接跳過去...