int a = 65; 假設存放a的記憶體首位址為:0x0012ff7c。輸出位址可用:「%p」
addr = 0x0012ff7c; 0x代表十六進製制,把a的位址賦值給addr
&a 0x0012ff7c printf("0x%p");
addr 0x0012ff7c printf("0x%p");
&addr 0x0012ff7c printf("0x%p");
(int*)addr 0x0012ff7c printf("0x%p"); addr裡面裝的是整數,這個整數恰好是位址,強制轉換
a 65 printf("%d");
*&a 65 等價於a printf("%d");
*&addr 0x0012ff7c 等價於addr printf("0x%p");
*(int*)addr 65 等價於a printf("%d");
2、指標占用的記憶體大小都是4位元組,位址都可以理解為乙個整數。
3、關於 * 號的位置
int *a;
int* a;
int * a;
三者等價,為了便於理解,我推薦挨著變數寫,即第一種
例如 int* a,b,c; 其實是 int *a,b,c;
不是 int *a,*b,*c; 而 是 int b,c,*a;
4、結構體的指標
struct part;
struct part p[3]; 理解為 int p[3];
struct part *p1; 理解為 int *p1;
p1 = p[0]; p1 = p[1]; p1 = p[2];
(*p1).number; 利用指標求結構體成員的內容
等價於p1->number;
5、指標移動:
關於儲存順序和位址降序
C語言指標
指標變數是包含記憶體位址的變數,它指向記憶體中的一塊區域,通過指標的值,可以間接訪問到相應的記憶體單元的資料,並做相應的修改。1 指標的定義和簡單使用 定義乙個指標變數和定義一般的變數類似,只需在變數名前面加乙個 對乙個指標變數賦值可以用取位址符 來獲取到乙個變數的位址,如果要獲得指標指向的記憶體區...
C語言指標
1 定義指標變數void change int n 格式 變數型別 變數名 定義了乙個指標變數p 指標變數只能儲存位址 指標變數p前面的int 指標變數p只能指向int型別的資料 int main void change int n 2 指標與陣列 陣列名其實質是乙個指標,但是它和普通的指標變數還是...
c語言指標
編寫程式,在主函式裡用指標陣列輸入六個字串,再用另乙個函式對這六個字串排序,並在主函式中輸出排好序的字串。include void sort char s,int n char temp for int i 0 ifor int j 0 jif strcmp s j s j 1 0 temp s j...