1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng phương pháp lập trình chương 7

16 145 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

Định dạng
Số trang 16
Dung lượng 414,5 KB

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

Nội dung

Thông số hình thức kiểu con trỏ.. - ĐN: Biến kiểu con trỏ là biến chứa địa chỉ của một biến khác.. - Các loại biến con trỏ: Nếu biến con trỏ chứa: địa biến nguyên ta gọi là con trỏ nguy

Trang 1

CHƯƠNG 7

KIỂU CON TRỎ ( POINTER )

Trang 2

Nội dung:

I. Định nghĩa -Khai báo

II. Các thao tác trên biến con trỏ

III. Con trỏ và mảng

IV. Thông số hình thức kiểu con trỏ

V. Cấp phát động

Trang 3

- ĐN: Biến kiểu con trỏ là biến chứa địa chỉ của một

biến khác.

- Các loại biến con trỏ: Nếu biến con trỏ chứa:

địa biến nguyên ta gọi là con trỏ nguyên,

địa chỉ biến thực gọi là con trỏ thực,

địa chỉ biến ký tự gọi là con trỏ ký tự

- Cú pháp khai báo:

tên_kiểu* tên_biến;

trong đó:

tên_kiểu là những kiểu đã được định nghĩa

ý nghĩa:

khai báo biến tên_biến là biến con trỏ tên_kiểu,

dùng để chứa địa chỉ của biến có kiểu là tên_kiểu

I ĐỊNH NGHĨA – KHAI BÁO

Trang 4

Ví dụ:

int* pa;

float* pf;

char* s;

int* a[100];

int (*a)[100];

I ĐỊNH NGHĨA – KHAI BÁO

Trang 5

1 Lấy địa chỉ của 1 biến: (address operator)

Sử dụng tóan tử &

Ví dụ:

int a=10;

int*pa;

pa=&a;

II CÁC THAO TÁC:

Trang 6

2.Lấy dữ liệu tại địa chỉ:(indirection operator)

Sử dụng tóan tử *

Ví dụ:

int a=10;

int*pa;

pa=&a;

cout<< *pa;

II CÁC THAO TÁC:

Trang 7

3.Cộng trừ con trỏ với số nguyên:

Khi cộng với 1, địa chỉ được tăng lên một lượng bằng kích thước kiểu con trỏ

Ví dụ 1:

int a=10;

int*pa=&a;

cout<<pa; // 0xFFF4

pa++;

cout<<pa; // 0xFFF6

II CÁC THAO TÁC:

Trang 8

Ví dụ 2:

int a[]={5,10,15,20,25}; int*pa=&a[0];

cout<<*pa;

pa++;

cout<<*pa;

II CÁC THAO TÁC:

Trang 9

4.So sánh 2 con trỏ:

Giống so sánh 2 số nguyên

Thường dùng khi 2 con trỏ cùng trỏ đến

phần tử của 1 mảng

II CÁC THAO TÁC:

Trang 10

1 Truy xuất phần tử mảng thông qua biến

con trỏ:

Ví dụ: int a[4];

int* p=&a[0];

III CON TRỎ VÀ MẢNG:

a[0] tương đương với *(p+0) a[1] tương đương với *(p+1) a[2] tương đương với *(p+2) a[3] tương đương với *(p+3)

Trang 11

2 Tên biến mảng là hằng con trỏ: có trị

bằng địa chỉ của phần tử đầu

Ví dụ: int a[4];

int i=2;

khi đó a[i] tương đương *(a+i)

III CON TRỎ VÀ MẢNG:

Trang 12

3 Tên thông số hình thức mảng tương

đương biến con trỏ đối với hàm

Ví dụ:

void nhap(int a[], int &n);

tương đương với

void nhap(int *a, int &n);

III CON TRỎ VÀ MẢNG:

Trang 13

Ví dụ:

void swap(int*pa, int* pb)

{

int tam;

tam=*pa;

*pa=*pb;

*pb=tam;

}

III THAY ĐỔI THÔNG SỐ THỰC BẰNG

THÔNG SỐ HÌNH THỨC CON TRỎ:

Trang 14

1 Khái niệm:

stack heap

2 Toán tử new

Cú pháp:

biến_con_trỏ=new tên_kiểu[N];

Ý nghĩa: Cấp phát vùng nhớ đủ để lưu N biến kiểu tên_kiểu Mặc định N=1 (khi không có N).

3 Toán tử delete

delete [] biến_con_trỏ;

Ý nghĩa: Thu hồi vùng nhớ đã cấp phát cho biến_con_trỏ bằng new

V CẤP PHÁT ĐỘNG:

Trang 15

Ví dụ:

int * a;

a=new int;

int *p;

p=new int[100];

delete a;

delete [] p;

V CẤP PHÁT ĐỘNG:

Trang 16

void nhap(int* &a, int&n)

a=new int[n];

for(int i=0; i<n; i++)

cin>>a[i]; //hoặc cin>>*(a+i);

}

void xuat(int* a, int n)

{ for(int i=0; i<n; i++)

cout<<setw(4)<<a[i]; //hoặc cout<<*(a+i);

}

void main()

nhap(a,n);

xuat(a,n);

}

Ví dụ: Sử dụng mảng cấp phát động

Ngày đăng: 04/12/2015, 15:04

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

TÀI LIỆU LIÊN QUAN