指標的簡單運算

2021-09-25 05:24:44 字數 2400 閱讀 7724

//64位系統可以生產32位的程式也能生成64位的程式。

//x86 32位程式

//x64 64位程式

//乙個指標變數提供兩方面的資訊

//1.某個記憶體的位址是哪

//2.這個記憶體的空間大小是多大

//1.指標 + - 整數

//指標+1意味著,位址往後(變大)跳過乙個元素

//指標減一意味著,位址向前跳過乙個元素

//2.指標-指標

//兩指標之間隔了幾個元素。

//0x10 -> 16, 4個int剛好16個位元組

int* p1 = 0x100;

int* p2 = 0x110;

printf("%d\n", p2 - p1);

char* p3 = 0x100; //強制型別轉換 (char*)0x100

指標相減,大部分情況下是沒有意義的。

只有當兩個指標指向同意連續的記憶體空間的時候,相減才有意義

int arr = ;

int* p1 = &arr[0];

int* p2 = &arr[2];

printf("%p\n", p1);

printf("%p\n", p2);

printf("%d\n", p2-p1);

//3.指標的關係運算。

// < > <= >= == !=

//指標比較比較的是指標變數中儲存的位址是否相同

int num1 = 10;

int* p1 = &num1;

int num2 = 10;

int* p2 = &num2;

if (p1 == p2)

else

//為啥不能直接用==比較字串?因為c語言中字串使用字元陣列來表示的,而單獨拿出陣列名相當於首

//元素的位址,用==比較就相當於比較兩個指標變數是否相等,比較的依據是指標變數中儲存的位址

char str1 = "hehe";

char str2 = "hehe";

if (str1 == str2)

else

//strcmp 其實能比較兩個字串的大小

== 和 != 是最有用的指標比較

int arr = ;

int* p1 = &arr[0];

int* p2 = &arr[2];//等價於 int* p2=arr+2

int* p3 = arr + 2;

if (p2==p3)

else

system("pause");

return 0;

}

指標的運算

指標運算 指標演算法並不依賴於指標的型別,如果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 加整個陣列 這種含義不太符合實際,題中要的是遍歷陣列中的數。如果是加整個陣列,那就是直接跳過去...