Tài liệu Chương 1: Biến con trỏ pdf

11 576 1
Tài liệu Chương 1: Biến con trỏ pdf

Đ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

Phần : turbo c nâng cao c++ Chơng : Biến trỏ Đ1 Khái niệm chung Một trỏ biến chứa địa biến khác Nếu biến chứa địa biến khác tthì ta nói biến thứ trỏ đến biÕn thø hai Cịng nh− mäi biÕn kh¸c, biÕn trỏ phải đợc khai báo trớc dùng Dạng tổng quát để khai báo biến trỏ : type * Trong : type kiểu liệu thích hợp đợc chấp nhận C tên biến trỏ Kiểu liệu xác định kiểu biến mà trỏ đến Ví dụ khai báo biến trỏ đến biến nguyên biến kiểu kí tự: char *p; int *x,*y; Con trỏ có trị đặc biệt gọi NULL Trị có nghĩa trỏ cha trỏ tới địa hợp lệ Để dùng đợc trị phải dùng #include đầu chơng trình Đ2 Các phép toán trỏ C có hai phép toán đặc biệt trỏ : * & Phép toán & phép toán trả địa nhí cđa biÕn sau nã VÝ dơ : p = &a; đặt vào biến p địa nhớ biến a Địa liên quan đến trị số biến a Nói cách khác địa biến a không liên quan đến nội dung biến a Phép toán * phép toán trả trị biến đặt địa đợc mô tả biến sau Ví dụ biến a chứa địa biến b p = *a đặt trị số biến b vào biến p Chơng trình 1-1 : Lập chơng trình in số 100 lên hình main() { int *p,a,b; clrscr(); a=100; p=&a; b=*p; printf("%d",b); getch(); } Đ3 Tầm quan trọng liệu khai báo trỏ Cần phải bảo đảm trỏ luôn trỏ đến kiểu liệu phù hợp Ví dụ khai báo trỏ kiểu int , trình biên dịch hiểu trỏ ®Õn mét biÕn cã ®é dµi lµ byte Ta xét chơng trình nh sau Chơng trình 1-2 main() { float x=10.1,y; int *p; clrscr(); p=&x; y=*p; printf("%f",y); getch(); } Chơng trình nhằm gán trị x cho biến y in trị Khi biên dịch chơng trình không báo lỗi mà nhắc nhở : Suspencious pointer conversion in function main Tuy nhiên chơng trình không gán trị x cho y đợc Lí ta khai báo trỏ int cho trỏ tới biến float x Nh trình biên dịch chuyển byte thông tin cho y byte để tạo số dạng float Đ4 Các biểu thức trỏ C¸c phÐp g¸n trá : Cịng gièng nh− bÊt kì biến khác , ta dùng trỏ phải phép gán để gán trị trỏ cho trỏ khác Ví dụ ta viết Chơng trình 1-3 : main() { int x; int *p1,*p2; clrscr(); p1 = &x; p2 = p1; printf( %p,p2); getch(); } Chơng trình lên địa biến x dạng hex cách dùng mà định dạng khác hàm printf() %p mô tả lên trị chứa biến trỏ theo dạng reg:xxxx với reg tên ghi segment CPU xxxx địa offset tính từ đầu segment Các phép toán số học cña trá : Trong C , ta chØ cã thể dùng hai phép toán số học tác động lên trỏ phép + - Để hiểu đợc xảy thực phép toán số học lên trỏ ta giả sử p1 trỏ đến số nguyên có địa 2000 Sau thực biĨu thøc p1++ ; trá sÏ chØ ®Õn số nguyên nằm địa 2002 tăng trỏ lên đến số nguyên mà số nguyên lại có độ dài byte Điều giảm VÝ dơ : p1 ; sÏ trá tíi số nguyên địa 1998 Nh trỏ tăng lên , đến liệu địa tuỳ theo độ dài kiểu liệu C cho phÐp céng hay trõ mét sè nguyªn víi mét trá BiÓu thøc : p1 = p1 + 9; làm cho trỏ tới phần tử thø cã kiĨu lµ kiĨu mµ p1 trá tíi nằm sau phân tử thời trỏ đến Ngoài phép toán , trỏ không chấp nhận phép toán khác So s¸nh c¸c trá : Chóng ta cã thĨ so s¸nh trá mét biĨu thøc quan hƯ VÝ dơ cho hai p vµ q , phát biểu sau hợp lệ : if (p

Ngày đăng: 13/12/2013, 11:15

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan