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