一、算術運算:
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 加整個陣列 這種含義不太符合實際,題中要的是遍歷陣列中的數。如果是加整個陣列,那就是直接跳過去...