Chng 8 Con tro Pointer Presenter Nhp mn












![Con tro va hă ng void f 1 (char *p) { char s[] = Con tro va hă ng void f 1 (char *p) { char s[] =](https://slidetodoc.com/presentation_image_h/ee53bf2b4dbfe54202b14d6140d00ec2/image-13.jpg)




- Slides: 17

Chương 8 Con tro (Pointer) Presenter: Nhập môn về lập trình (C 8) Slide 1

Learning outcomes L. O. 6. 1 – Khai báo được con trỏ. L. O. 6. 2 – Truy xuất được dữ liệu qua con trỏ. L. O. 6. 3 – Giải thích được cách cấp phát bộ nhớ động. L. O. 6. 4 – Sử dụng được các phép toán trên con trỏ. L. O. 6. 5 – Sử dụng được con trỏ của con trỏ khác. L. O. 6. 6 – Dùng được con trỏ với kiểu cấu trúc. L. O. 6. 7 – Hiểu được sự liên quan giữa con trỏ và mảng. Nhập môn về lập trình (C 8) Slide 2

Kiê u con tro (pointer) Đi nh nghi a v Kiểu con trỏ la kiê u biê n đă c biê t chi du ng đê giư đi a chi (tham kha o). Du ng dâ u * đê đi nh nghi a. Vi du : v Toán tử '&' cho phép ga n địa chỉ của một biến va o con tro như sau : <con tro > = &<tên biến> Ví dụ : v Con tro biê n đươ c du ng lưu giư đi a chi ca c biê n va cho phe p truy xuâ t biê n mô t ca ch gia n tiê p. v Ư ng du ng thươ ng du ng la tham sô ha m. Nhập môn về lập trình (C 8) Slide 3

Kiê u con tro (pointer) Vi du 1 Nhập môn về lập trình (C 8) Slide 4

Con tro biê n câ u tru c Tham sô ha m kiê u con tro câ u tru c Nhập môn về lập trình (C 8) Slide 5

Pointer va câ p pha t đô ng Y tươ ng v Kiểu pointer rất thích hợp để quản lý dữ liệu có độ lớn chưa biết trước tại thời điểm lập trình. v Ví dụ : double param[100]; // câ p pha t 10. 000 phần tử kiê u double hay double** param; // chi câ p pha t 1 pointer (double) (double**) (double*) Nhập môn về lập trình (C 8) A T N Ậ R M Slide 6

Pointer va câ p pha t đô ng hiê n thư c v Sau khi co con tro đê n ma trâ n, đê co ma trâ n thư c sư , ta du ng ha m malloc (memory allocation) trong thư viê n malloc. lib (#include malloc. h) đê sinh ra ca c vector va phâ n tư. v Ví dụ : • Sinh ra m vector (m chưa biê t trươ c) printf ("Nhap M: "); scanf_s("%d", &m); param = (double**) malloc(m * sizeof(double*)); • Sinh ra n phâ n tư trong mô i vector (n chưa biê t trươ c) printf ("Nhap N: "); scanf_s("%d", &n); for (i = 0; i < m; i++) param[i] = (double*) malloc(n * sizeof(double)); v Chu y toa n tư sizeof(kiê u) tra vê ki ch thươ c kiê u câ n câ p pha t trong bô nhơ. Nhập môn về lập trình (C 8) Slide 7

Pointer va câ p pha t đô ng Vi du Nhập môn về lập trình (C 8) Slide 8

Ví du thêm vê con tro v int* pi; // pointer to int v char** ppc ; // pointer to char v int* ap[15]; // array of 15 pointers to ints v int (*fp)(char*); // pointer to function taking a char* // argument; returns an int v int* f(char*); // function taking a char* argument; // returns a pointer to int Nhập môn về lập trình (C 8) Slide 9

Pointers to strings Đu ng hay sai ? v char *psz; psz = “File not ready”; v char *psz = “File not ready”; char pszarray[ ] = “Drive not ready”; v char pszarray[16]; pszarray = “Drive not ready”; v char *psz; scanf_s(“%s”, psz); Nhập môn về lập trình (C 8) Slide 10

Pointer arithmetic and arrays Vi du 1 Nhập môn về lập trình (C 8) Slide 11

Pointer arithmetic and arrays Vi du 2 Nhập môn về lập trình (C 8) Slide 12
![Con tro va hă ng void f 1 char p char s Con tro va hă ng void f 1 (char *p) { char s[] =](https://slidetodoc.com/presentation_image_h/ee53bf2b4dbfe54202b14d6140d00ec2/image-13.jpg)
Con tro va hă ng void f 1 (char *p) { char s[] = "Gorm"; const char* pc=s ; pc[3]=´g´; pc=p; // con tro đê n mô t hă ng // sai: không thê thay đô i nô i dung // ok: co thê thay đô i đi a chi char *const cp=s; cp[3]=´a´; cp=p; // hă ng con tro // ok: co thê thay đô i nô i dung // sai: không thê thay đô i đi a chi const char *const cpc=s; cpc[3]=´a´; cpc=p ; // hă ng con tro đê n mô t hă ng // sai: không thê thay đô i nô i dung // sai: lâ n đi a chi } *const là toán tử khai báo hằng con trỏ (không có toán tử const*). Nhập môn về lập trình (C 8) Slide 13

Phép toán trên pointer Kê t qua nhâ n đươ c la gi ? v Thường dùng (pointer + integer) v Có thể trừ số nguyên vào con trỏ (pointer - integer) v Có thể trừ hai con trỏ (pointer - pointer) v Có thể so sánh hai con trỏ với nhau Nhập môn về lập trình (C 8) (<=, =, >=) Slide 14

Con tro đê n ha m Nhập môn về lập trình (C 8) Slide 15

Da y con tro ha m Kha i niê m v Da y con tro ha m thi ch hơ p vơ i ca c ba i toa n xư ly theo sơ đô chuyê n tra ng tha i. Nhâ p sô N Ti nh toa n 01 Go i ha m xuly[1] () Nhập môn về lập trình (C 8) 00 Go i ha m xuly[0] () In kê t qua 02 Go i ha m xuly[2] () Slide 16

Da y con tro ha m Vi du v Sư a la i ha m tinhdiem_tk() đê du ng da y con tro ha m. v Chương tri nh du ng da y con tro ha m Nhập môn về lập trình (C 8) Slide 17
Chng finance
Constant pointer and pointer to constant
Pointer of pointer in c
Constant pointer and pointer to constant
Constant pointer and pointer to constant
Display the address of intval using cout and intptr.
Pointer expressions and pointer arithmetic
Pointer pointer
Pointer pointer
Giải phương trình bậc 1 sql
Palabras con pra
Notice tro
Introductory chemistry 5th edition nivaldo j. tro
Introductory chemistry 5th edition answers
Bài 2 cải tạo tu bổ vườn tạp
Hỡi người hãy nhớ mình là bụi tro
Hãy tìm mạch ý của bài văn hoa học trò
Trò chơi khuông nhạc bàn tay