Con Tro - P1

2
Con tr=> là 1 biến bình thường nhưng có thtrđi lung tung trong bnhớ - Ti sao li có con tr? Sdng được gì ??? => Vì có thtrđi lung tung trong bnhcho nên vic sdng bnhslinh hot hơn. -Áp dng cho mng động CÚ PHÁP: <Kiu dliu> * <Tên con tr> <Kiu dliu> là : - Các kiu có sn (int, float, double, char void...) - Các kiu dliu tto ( PhanSo, HocSinh...) <Tên con tr> là : - Theo quy tc đặt tên vd: int *a; int* a; int * a; => 3 cách viết là như nhau nhưng để cho rõ ràng code thì khi khai báo 1 biến thì du * để sát tên biến, còn khi khai báo 1 hàm thì du * để sát vào kiu dliu. vd: int *a; // Khai báo biến con tr int* TimMax(int *a, int *b) // Khai báo 1 hàm trv1 con tr- Trong hđiu hành 32 bit thì con trtn 4 bytes. - Trong hđiu hành 64 bit thì con trtn 8 bytes. - Lưu ý: <Kiu dliu> trong khai báo con trkhông phi là kiu dliu ca nó mà là kiu dliu ca vùng nhmà nó đang trđến. - void* : Con trvô kiu, tc là có thnhn mi kiu dliu nhưng phi ép li ---- TCHC BNHTRONG MÁY TÍNH ------- - Trong bnhđược chia làm 4 ph•n chính 1/ Code Segment => là nơi lưu trmã máy dng nh phân 2/ Data Segment => là nơi cha các biến t°nh (static) và các biến toàn cc 3/ Heap => là vùng nhkhông do CPU qun lý, người lp trình phi tqun lý vùng nhnày.Vùng nhnày dành cho con tr4/ Stack => là vùng nhdo CPU qun lý, người lp trình không thcan thip vào vùng nhnày, nếu ctình can thip sb l²i.Vùng nhnày cha  các biến cc b(b bao phb³i du {}) - 1 biến bình thường trong bnhg¶m 2 ph•n: + ·a ch¸ ca biến + Giá tr ca biến vd: int a = 5; // Khai báo biến a mang giá tr là 5 + ·a ch¸ ca biến là &a + Giá tr ca biến là a ·a ch¸ g¶m 8 chsdng Hexa - ·i vi 1 con trg¶m 3 ph•n + ·a ch¸ ca con tr. + Min giá tr ca con trtc là đa ch¸ ca biến mà nó đang trti + Giá tr ca con tr. vd: int a = 5; int *b = &a;//Cho con trb trti biến a *b: giá tr con trb.// chính là giá tr ca a &b: đa ch¸ ca con trb

Transcript of Con Tro - P1

Page 1: Con Tro - P1

7/26/2019 Con Tro - P1

http://slidepdf.com/reader/full/con-tro-p1 1/2

Con trỏ=> là 1 biến bình thường nhưng có thể trỏ đi lung tungtrong bộ nhớ 

- Tại sao lại có con trỏ ? Sử dụng được gì ???=> Vì có thể trỏ đi lung tung trong bộ nhớ cho nênviệc sử dụng bộ nhớ sẽ linh hoạt hơn.

-Áp dụng cho mảng động

CÚ PHÁP:<Kiểu dữ liệu> * <Tên con trỏ>

<Kiểu dữ liệu> là :- Các kiểu có sẵn (int, float, double, char void...)- Các kiểu dữ liệu tự tạo ( PhanSo, HocSinh...)

<Tên con trỏ> là :- Theo quy tắc đặt tên

vd: int *a; int* a; int * a; => 3 cách viết là như nhaunhưng để cho rõ ràng code thì khi khai báo 1 biến thì dấu * để sát tênbiến, còn khi khai báo 1 hàm thì dấu * để sát vào kiểu dữ liệu.

vd: int *a; // Khai báo biến con trỏ  int* TimMax(int *a, int *b) // Khai báo 1 hàm trả về 1 con trỏ

- Trong hệ điều hành 32 bit thì con trỏ tốn 4 bytes.- Trong hệ điều hành 64 bit thì con trỏ tốn 8 bytes.

- Lưu ý:<Kiểu dữ liệu> trong khai báo con trỏ không phải là kiểu dữ liệu của

nó mà là kiểu dữ liệu của vùng nhớ mà nó đang trỏ đến.

- void* : Con trỏ vô kiểu, tức là có thể nhận mọi kiểu dữ liệu nhưng phải ép lại

---- TỔ CHỨC BỘ NHỚ TRONG MÁY TÍNH -------- Trong bộ nhớ được chia làm 4 ph•n chính

1/ Code Segment => là nơi lưu trữ mã máy dạng nh phân2/ Data Segment => là nơi chứa các biến t°nh (static) và các biến toàn cục

3/ Heap => là vùng nhớ không do CPU quản lý, người lập trình phải tự quảnlý vùng nhớ này.Vùng nhớ này dành cho con trỏ4/ Stack => là vùng nhớ do CPU quản lý, người lập trình không thể can thiệp

vào vùng nhớ này, nếu cố tình can thiệp sẽ b l²i.Vùng nhớ này chứa  các biến cục bộ(b bao phủ b³i dấu {})

- 1 biến bình thường trong bộ nhớ g¶m 2 ph•n:+ ·a ch¸ của biến+ Giá tr của biến

vd: int a = 5; // Khai báo biến a mang giá tr là 5+ ·a ch¸ của biến là &a+ Giá tr của biến là a

·a ch¸ g¶m 8 chữ số dạng Hexa

- ·ối với 1 con trỏ g¶m 3 ph•n+ ·a ch¸ của con trỏ.+ Miền giá tr của con trỏ tức là đa ch¸ của biến mà nó đang trỏ tới+ Giá tr của con trỏ.

vd:int a = 5;int *b = &a;//Cho con trỏ b trỏ tới biến a*b: giá tr con trỏ b.// chính là giá tr của a&b: đa ch¸ của con trỏ b

Page 2: Con Tro - P1

7/26/2019 Con Tro - P1

http://slidepdf.com/reader/full/con-tro-p1 2/2

b: miền giá tr của con trỏ b, chính là đa ch¸ của biến a- vd1: Con trỏ trỏ tới 1 biến- vd2: Con trỏ trỏ tới 1 con trỏ