1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng lập trình cơ bản bài 6 chu thị hường

38 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Chủ Thị Hường
Tác giả Chu Thị Hường
Trường học Khoa Công Nghệ Thông Tin, Đại Học Bách Khoa Hà Nội
Chuyên ngành Lập trình cơ bản
Thể loại Bài giảng
Thành phố Hà Nội
Định dạng
Số trang 38
Dung lượng 1,85 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Các toán tử con trỏ:-indirection/dereferencing operator : Trả về toán hạng của con trở trỏ đến: *yptr returns y bởi vì yptr trỏ tới y CON TRỎ *yptr returns y bởi vì yptr trỏ tới y Co

Trang 1

LẬP TRÌNH CƠ BẢN

CON TRỎ VÀ XÂU KÝ TỰ

LẬP TRÌNH CƠ BẢN

Trang 2

 Con trỏ

 Xâu ký tự

NỘI DUNG

Trang 3

 Giới thiệu:

 Các biến chúng ta đã biết và sử dụng trước

đây đều là biến có kích thước và kiểu dữ liệu

xác định Người ta gọi các biến kiểu này là

Trang 4

 Giới thiệu:

 Biến con trỏ (pointer) với các đặc điểm:

 Biến con trỏ không chứa dữ liệu mà chỉ chứa địa chỉ của dữ liệu hay chứa địa chỉ của ô nhớ chứa

Trang 5

 Biến con trỏ:

 Các giá trị của chúng chứa địa chỉ các ô nhớ

 Các biến thông thường chứa giá trị cụ thể (tham

chiếu trực tiếp)

CON TRỎ

count

7

 Con trỏ chứa địa chỉ của các biến có giá trị cụ thể

(tham chiếu không trực tiếp)

 Tham chiếu không trực tiếp là con trỏ giá trị

7

count countPtr

Trang 6

 Khai báo con trỏ:

<Kiểu> * <Tên con trỏ> ;

 * được sử dụng với các biến con trỏ:

int *myPtr;

 Khai báo một con trỏ trỏ tới kiểu int (con trỏ của kiểu int *)

CON TRỎ

 Khai báo một con trỏ trỏ tới kiểu int (con trỏ của kiểu int *)

 Các con trỏ yêu cầu sử dụng dấu * trước mỗi khai

báo biến:

int *myPtr1, *myPtr2;

Trang 7

 Các toán tử con trỏ:

 & (Toán tử địa chỉ - address operator):

 Trả về địa chỉ của toán hạng

yptr

500000 600000

y

600000 5

Trang 8

 Các toán tử con trỏ:

-indirection/dereferencing operator ):

 Trả về toán hạng của con trở trỏ đến:

 *yptr returns y (bởi vì yptr trỏ tới y)

CON TRỎ

 *yptr returns y (bởi vì yptr trỏ tới y)

 Con trỏ không tham chiếu (toán hạng của *) phải là một giá trị (không là hằng)

 * và & là hai toán tử ngược nhau

Trang 9

 Các toán tử con trỏ:

CON TRỎ

Trang 10

 Các toán tử con trỏ:

CON TRỎ

Trang 11

 Gọi hàm tham chiếu với đối số con trỏ:

 Truyền địa chỉ của đối số sử dụng toán tử &

 Cho phép ta thay đổi thực sự trên ô nhớ

 Mảng không truyền với & bởi vì tên mảng đã là một

con trỏ

CON TRỎ

con trỏ

 Toán tử * được sử dụng như biến trong thân hàm:

void double( int *number ) {

*number = 2 * ( *number );

}

Trang 12

 const pointers

 Trỏ đến một ô nhớ cố định

 Phải khởi tạo khi khai báo

int *const myPtr = &x;

 Kiểu int *const – Hằng con trỏ kiểu int

CON TRỎ

 Kiểu int *const – Hằng con trỏ kiểu int

 const pointer to a const int

 x có thể thay đổi, nhưng không thể thay đổi *Ptr

Trang 14

 Biểu thức con trỏ và các phép toán số học

 Các phép số học có thể thực hiện trên con trỏ:

 Increment/decrement pointer (++ or )

 Cộng số nguyên với pointer( + or += , - or -=)

 Các con trỏ có thể trừ cho nhau

CON TRỎ

 Các con trỏ có thể trừ cho nhau

 Các toán tử trên vô nghĩa trừ khi thực hiện

trên mảng.

Trang 15

 Biểu thức con trỏ và các phép toán số học

 Ví dụ 5 phần tử trong mảng int mỗi phần tử chiếm 4

v[0] v[1] v[2] v[3] v[4]

3000 3004 3008 3012 3016 location

Trang 16

 Biểu thức con trỏ và các phép toán số học

 Ví dụ 5 phần tử trong mảng int mỗi phần tử chiếm 4

 Các con trỏ cùng kiểu có thể gán cho nhau

 Con trỏ không cùng kiểu thì phải ép kiểu

Trang 19

 Con trỏ và mảng

 Truy cập các phần tử mảng nhiều chiều theo

dạng con trỏ theo các quy tắc sau:

Trang 20

 Con trỏ và mảng

 Truy cập các phần tử mảng nhiều chiều theo

dạng con trỏ theo các quy tắc sau:

Trang 27

 Khai báo:

char <Biến> [n]; // Khai báo với chiều dài tối đa

 n là chiều dài tối đa, bộ nhớ sẽ cung cấp n+1 byte, trong đó byte cuối cùng lưu k tự ‘\0’ để đánh dấu kết thúc chuỗi

char <Biến>[] = “<Khởi tạo>";

XÂU KÝ TỰ

char <Biến>[] = “<Khởi tạo>";

char *<BienPtr> = “<Khởi tạo>";

 Ví dụ:

char color[] = "blue";

char *colorPtr = "blue";

 Color có 5 phần tử

Trang 28

 Nhập/xuất chuỗi:

 Để nhập một chuỗi ký tự từ bàn phím, ta sử dụng hàm gets() Cú pháp:

gets(<Biến chuỗi>)

XÂU KÝ TỰ

gets(<Biến chuỗi>)

 Ta cũng có thể sử dụng hàm scanf() để nhập dữliệu cho biến chuỗi, tuy nhiên lúc này ta chỉ có thểnhập được một chuỗi không có dấu khoảng trắng

Trang 29

 Nhập/xuất chuỗi:

 Xuất chuỗi lên màn hình

 Để xuất một chuỗi (biểu thức chuỗi) lên màn hình,

Trang 30

 Các hàm xử lý chuỗi:

 Cộng chuỗi - Hàm strcat():

char *strcat(char *des, const char *source)

 Hàm này có tác dụng ghép chuỗi nguồn vào chuỗi đích

XÂU KÝ TỰ

đích

 Xác định độ dài chuỗi - Hàm strlen()

 Cú pháp: int strlen(const char* s)

Trang 31

 Sao chép chuỗi, hàm strcpy(): Hàm này được dùng

để sao chép toàn bộ nội dung của chuỗi nguồn vào

chuỗi đích Cú pháp:

Trang 32

 Các hàm xử lý chuỗi:

 Hàm này cho phép chép n ký tự đầu tiên của chuỗi nguồn sang chuỗi đích Cú pháp:

char *strncpy(char *Des, const char *Source,

XÂU KÝ TỰ

char *strncpy(char *Des, const char *Source,

size_t n)

 Trích một phần chuỗi, hàm strchr()

Trang 33

 Các hàm xử lý chuỗi:

 Tìm kiếm nội dung chuỗi, hàm strstr()

 Hàm strstr() được sử dụng để tìm kiếm sự xuất hiện đầu tiên của chuỗi s2 trong chuỗi s1 Cú pháp:

Trang 34

 Các hàm xử lý chuỗi:

 So sánh chuỗi, hàm stricmp()

 Hàm này thực hiện việc so sánh 2 chuỗi s1 và s2, không phân biệt chữ thường và chữ hoa Cú pháp: int stricmp(const char *s1, const char *s2)

XÂU KÝ TỰ

int stricmp(const char *s1, const char *s2)

 Khởi tạo chuỗi, hàm memset()

 Hàm này được sử dụng để đặt n ký tự đầu tiên của chuỗi là ký tự c Cú pháp:

Trang 35

 Các hàm xử lý chuỗi:

 Đổi từ chuỗi ra số, hàm atoi(), atof(), atol()

(trong stdlib.h) Cú pháp :

int atoi(const char *s) : chuyển chuỗi thành số nguyên

long atol(const char *s) : chuyển chuỗi thành số nguyên

XÂU KÝ TỰ

long atol(const char *s) : chuyển chuỗi thành số nguyên

dài

float atof(const char *s) : chuyển chuỗi thành số thực

 Nếu chuyển đổi không thành công, kết quả trả về của các hàm là 0

Trang 36

 Ví dụ: Viết chương trình cho phép chép toàn bộ chuỗi nguồn

Trang 37

 Bài 1 Viết chương trình nhập vào một dãy n số nguyên,

sắp xếp dãy số theo thứ tự giảm dần In dãy số sau khi

lên màn hình Nhập một số nguyên khác vào và xét xem

có phần tử nào của ma trận trùng với số này không ? Ở vị

trí nào ? Có bao nhiêu phần tử ? (Dùng con trỏ)

 Bài 3: Viết chương trình nhập vào hai ma trận A có cấp

m, k và B có cấp k, n In hai ma trận lên màn h.nh Tích

hai ma trận A và B là ma trận C được tính bởi công thức:

Trang 38

 Bài 4 Viết chương trình nhập một chuỗi ký tự từ bàn

phím, xuất ra màn h.nh m ASCII của từng ký tự có trong

chuỗi

 Bài 5 Viết chương trình nhập một chuỗi ký tự và kiểm tra

xem chuổi đó có đối xứng không

 Bài 6 Giả sử Họ tên người Việt luôn có dạng “Họ Đệm

BÀI TẬP THỰC HÀNH

 Bài 6 Giả sử Họ tên người Việt luôn có dạng “Họ Đệm

Tên”, trong đó các phần Họ,Đệm, Tên luôn cách nhau 1

dấu cách (Mã ASCII=32); phần Đệm có thể có hoặc

không hoặc có nhiều hơn 1 từ Hãy viết chương trình cho

Ngày đăng: 21/07/2023, 16:55

HÌNH ẢNH LIÊN QUAN

Bảng mã Ascii, ta có thể sử dụng hàm - Bài giảng lập trình cơ bản bài 6   chu thị hường
Bảng m ã Ascii, ta có thể sử dụng hàm (Trang 33)

🧩 Sản phẩm bạn có thể quan tâm