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

Kiểu con trỏ trong ngôn ngữ C

22 1 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 đề Kiểu Con Trỏ Trong Ngôn Ngữ C
Người hướng dẫn TS. Trương Quốc Bảo
Trường học Lập trình căn bản
Thể loại bài giảng
Năm xuất bản 2015
Định dạng
Số trang 22
Dung lượng 665,47 KB

Nội dung

Kiểu con trỏ trong ngôn ngữ lập trình C là một trong những đặc điểm mạnh mẽ và quan trọng nhất của ngôn ngữ này. Con trỏ là một biến đặc biệt chứa địa chỉ của một biến khác trong bộ nhớ. Điều này cho phép bạn truy cập và thay đổi dữ liệu tại địa chỉ bộ nhớ đó. Dưới đây là một số điểm quan trọng về kiểu con trỏ trong C

Trang 1

LẬP TRÌNH CĂN BẢN

KIỂU CON TRỎ

Giảng viên: TS Trương Quốc Bảo

Trang 2

 Giới thiệu kiểu dữ liệu con trỏ

 Khai báo và sử dụng biến con trỏ

 Con trỏ và mảng.

 Con trỏ và tham số hình thức của hàm.

NỘI DUNG CỦA CHƯƠNG

Trang 3

 1 con trỏ là 1 biến được dùng để chứa địa chỉ

*ptr=20;

pointer ptr variable a

FFF2 (address)GIỚI THIỆU KIỂU CON TRỎ (POINTER)

Trang 4

Cú pháp:

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

Ý nghĩa: Khai báo một biến có tên là Tên con trỏ

dùng để chứa địa chỉ của các biến có kiểu Kiểu.

Lưu ý: Kiểu void dùng để khai báo 1 con trỏ tổng quát, chưa chỉ vào bất cứ biến gì

Ví dụ:

int a, b, *pa, *pb; //pa và pb sẽ chỉ đến biến int

float f, *fb; //fb sẽ chỉ đến biến float

void *ptr; //ptr sẽ chỉ vào bất kỳ biến kiểu gìKHAI BÁO BIẾN KIỂU CON TRỎ

Trang 5

 Truy cập địa chỉ và nội dung của biến con trỏ.

 Cấp phát vùng nhớ cho biến con trỏ

 Cấp phát lại vùng nhớ cho biến con trỏ

 Giải phóng vùng nhớ cho biến con trỏ

 Một số phép toán trên con trỏ

THAO TÁC TRÊN BIẾN CON TRỎ

Trang 6

 Toán tử & dùng để định vị con trỏ đến địa chỉ của

một biến đang làm việc

 Cú pháp: <Tên biến con trỏ> = &<Tên biến>;

Giải thích: Ta gán địa chỉ của biến <Tên biến> cho con trỏ <Tên biến con trỏ>.

 Ví dụ:

int a=6;

int *c = &a; // &a là địa chỉ bộ nhớ của biến a

// Con trỏ c chỉ đến địa chỉ của biến aGÁN ĐỊA CHỈ BIẾN CHO CON TRỎ

Trang 7

 Để truy cập đến nội dung của ô nhớ mà con trỏ chỉ tới, ta sử dụng cú pháp:

*<Tên biến con trỏ>;

Với cách truy cập này thì *<Tên biến con trỏ> có thể

coi là một biến có kiểu được mô tả trong phần khai báo biến con trỏ

Ví dụ: int a = 6; int *c = &a;

*c = 7; /*Thay đổi nội dung của biến a bằng

cách dùng địa chỉ của nó được chứa trong con trỏ c - Tương đương a = 7 */

TRUY CẬP NỘI DUNG CỦA BIẾN

DO CON TRỎ QUẢN LÝ

Trang 8

sẽ làm giá trị của biến thay đổi theo.

TRUY CẬP NỘI DUNG CỦA BIẾN

DO CON TRỎ QUẢN LÝ

Trang 9

CẤP PHÁT VÙNG NHỚ CHO BIẾN

CON TRỎ (1)

 Có 2 cách để dùng được biến con trỏ

1 Cho nó chứa địa chỉ của 1 vùng nhớ đang tồn tại

int a=6;

int* c= &a; // &a là địa chỉ bộ nhớ của biến a

2 Cấp phát 1 vùng nhớ mới, rồi cho con trỏ chỉ

Trang 10

 Hàm void *malloc(size_t size): Cấp phát vùng nhớ

có kích thước là size (bytes)

 Hàm void *calloc(nitems, size): Cấp phát vùng nhớ

có kích thước là nitems*size (bytes)

 Ví dụ:

int a, *pa, *pb;

pa = (int*) malloc(sizeof( int )); /* Cấp phát vùng nhớ

có kích thước bằng với kích thước của một số nguyên */

pb= (int*) calloc(10, sizeof( int )); /* Cấp phát vùng nhớ có thể chứa được 10 số nguyên*/

CẤP PHÁT VÙNG NHỚ CHO BIẾN

CON TRỎ (2)

Trang 11

 Kết quả trả về của hàm là địa chỉ đầu tiên của vùng nhớ mới Địa chỉ này có thể khác với địa chỉ được chỉ ra khi cấp phát ban đầu Trả về NULL nếu không cấp phát được

Trang 12

GIẢI PHÓNG VÙNG NHỚ DO

BIẾN CON TRỎ QUẢN LÝ

 Hàm void free(void *block) : Giải phóng vùng nhớ được quản lý bởi con trỏ block.

Trang 13

Bây giờ thì: (p==q) => true (1)

q

FFFA (address) b

p

FFF2 (address) a

q

FFFA (address) b

Trang 14

 Cộng, trừ con trỏ với 1 số nguyên

 Ta có thể cộng (+), trừ (-) 1 con trỏ với 1 số nguyên N nào đó.

 Kết quả trả về là 1 con trỏ Con trỏ này chỉ đến vùng nhớ cách vùng nhớ của con trỏ hiện tại N phần tử.

 Ví dụ: Cho đoạn chương trình sau:

Trang 15

 Cho con trỏ chỉ tới NULL

Trang 16

 Chú ý: pa+1 không phải

cộng 1 vào pa Thay vào đó,

địa chỉ là pa+sizeof(*pa)

Trang 18

 x sẽ có giá trị của a[i] nào, tại mỗi lệnh gán sau?

CON TRỎ VÀ MẢNG (3)

Trang 19

CON TRỎ VÀ THAM SỐ HÌNH

THỨC CỦA HÀM (1)

 Ví dụ: Viết hàm hoán đổi nội dung 2 biến :

Trang 20

 Ví dụ: Viết lại hàm hoán đổi nội dung 2 biến như sau:

CON TRỎ VÀ THAM SỐ HÌNH

THỨC CỦA HÀM (2)

Trang 21

 Tại sao hàm trên có thể hoán vị được?

CON TRỎ VÀ THAM SỐ HÌNH

THỨC CỦA HÀM (3)

Ngày đăng: 16/03/2024, 14:59

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w