C中對於指標的理解

2021-08-07 09:52:46 字數 1098 閱讀 7401

計算機的記憶體是由位元組組成的,為了方便的管理記憶體,每塊記憶體都有乙個唯一的編號,也就是位址。

在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...