計算機的記憶體是由位元組組成的,為了方便的管理記憶體,每塊記憶體都有乙個唯一的編號,也就是位址。
在c語言中,變數有兩種:普通變數和指標變數
普通變數在宣告時,申請的記憶體空間大小由其資料型別所決定;
指標變數在宣告時,申請的記憶體空間大小是不變的,64位系統中,申請的大小為8個位元組,32位系統中為4個位元組。
int a = 20;
int*p = &a;// & 符號的作用是獲取a變數的首位址
// 以上可以分為兩步 int
*p; p = &a;
printf("sizeof(a) = %d \n", sizeof(a));
printf("sizeof(p) = %d \n", sizeof(p));
printf("a的位址 = %p \n", &a);
printf("p中所儲存的位址 = %p \n", p);
在使用指標時,容易遇到以下兩種錯誤:
指標的指向混亂
int *p;
int a = 20;
char b = 'k';
p = &b;
//這裡由於在宣告指標時,使用int, 所以該指標只能指向int型的變數
//在使用*p 獲取位址內容時,首先會找到指標所儲存的位址,在根據位址向後
//讀取指定大小的記憶體,這裡說的指定大小便是由宣告指標時的資料型別所決定的。
野指標
int
*p;*p = 100;
printf("%d \n", *p);
//由於p指標還沒有獲取有效的位址,這時候就向記憶體中寫入資料,會造成程式崩潰
對於C 中 this指標的理解
先要理解class的意思。class應該理解為一種型別,象int,char一樣,是使用者自定義的型別。雖然比int char這樣build in型別複雜的多,但首先要理解它們一樣是型別 用這個型別可以來宣告乙個變數,比如int x,myclass my等等。這樣就像變數x具有int型別一樣,變數my...
對於c指標 的理解
對於乙個指標型別的變數int p,其指類 指類 其所指向的空間的資料型別 為int,並且假設其定義 在乙個主函式中 定義在任意函式中都行 若在其前面加乙個 符並且將這個 p傳遞到乙個自己定義的函式 中,也就是將實參 p傳到乙個函式中去 其本質是將p的首位址取出來,作為實參傳到函式中去,形參head ...
對於指標的理解
就是記憶體中間開闢了一塊區域存放資料的位址,這個位址就叫做指標 指標的定義服從必須的格式 整型資料 int p a 陣列 int p arr 這樣就使得p存放了資料的位址 可以理解為p 0x0000 當涉及到指標與函式的時候 includeusing namespace std void swap0...