Yêu cầu mọi thông tin sao chép từ blog này phải được ghi rõ đầy đủ: Thông tin được sao chép từ "http://www.dangngochoangthanh.blogspot.com".

Cool wallpaper http://www.fancymessage.com

EMOJI KEYBOARD PRO http://emojiselector.com

THƯ VIỆN HÌNH ĐỘNG FLASH ANIMATION: http://flashanimationlibrary.blogspot.ru/

Hệ thống học trực tuyến đang được phát triển và sẽ đưa vào sử dụng vào cuối năm nay. Hãy xem qua một số demo của Học Trực Tuyến.


HỌC TRỰC TUYẾN ĐÃ CUNG CẤP PHIÊN BẢN TRUY CẬP QUA MOBILE http://dangngochoangthanh.blogspot.com/?m=1

XEM KÊNH HỌC TRỰC TUYẾN TRÊN YOUTUBE



Search on This Blog

Saturday, September 11, 2010

Con trỏ void

Con trỏ void là loại con trỏ đặc biệt. Trong C++, void dùng để quy định sự không tồn tại của một kiểu dữ liệu (hay kiểu dữ liệu rỗng). Vì vậy, con trỏ void là con trỏ trỏ vào giá trị có kiểu dữ liệu void (cũng vì lẽ đó, mà nó không xác định độ dài và thuộc tính tham chiếu ngược).
Con trỏ void cho phép trỏ sang một kiểu dữ liệu bất kì. Nhưng khi chuyển đổi, chúng có một giới hạn rất lớn: dữ liệu trỏ bởi chúng không thể trực tiếp tham chiếu ngược, và vì nguyên nhân này, chúng ta cần ép kiểu địa chỉ của con trỏ void sang một con trỏ khác mà nó có một kiểu dữ liệu cụ thể trước khi tham chiếu ngược trở lại.

Chương trình Kết quả
#include using namespace std;
void increase(void* data, int psize)
{
if(psize==sizeof(char))
{
char* pchar;
pchar=(char*)data;
++(*pchar);
}else if(psize==sizeof(int))
{
int* pint;
pint = (int*)data;
++(*pint);
}
}
int main()
{
char a = ‘x’;
int b = 1602;
increase(&a, sizeof(a));
increase(&b, sizeof(b));
cout<<<”, “<<
return 0;
}
y, 1603
Giải thích: hàm increase có hai tham số: tham số data là một con trỏ void, tham số psize là kích thước của con trỏ data. Câu lệnh if sẽ kiểm tra điều kiện xem biến trỏ data thuộc kiểu dữ liệu nào – nếu psize==sizeof(char) thì nó là con trỏ kiểu char, tương tự nếu psize==sizeof(int) thì nó là con trỏ kiểu int. Vì ở đây, ta chưa xác định được nó là con trỏ kiểu gì, nên ta sẽ sử dụng tham số là con trỏ void. Nếu là con trỏ char, ta sẽ sử dụng biến trỏ pchar để khởi tạo giá trị cho nó bằng cách ép kiểu từ con trỏ void. Hoàn toàn tương tự cho biến trỏ pint. Mục đích của hàm increase là tìm giá trị tiếp theo của tham số data. Trong hàm main, ta sử dụng hai biến char và int. Giá trị tiếp theo của kí tự ‘x’ là kí tự ‘y’, của số 1602 là 1603.

No comments:

Post a Comment