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ỏ, mảng và xâu kí tự

Như tôi đã nói ở trên, mảng có thể được khai báo theo kiểu truyền thống hoặc theo cấu trúc con trỏ. Ví dụ, tôi có một mảng số nguyên, chúng có 20 phần tử
int numbers[20]; //Khai báo truyền thống int *p; //Khai báo con trỏ
Hoặc ta có khai báo một biến xâu kí tự theo một trong 3 cách sau
char xau[20]; //Khai báo truyền thống char *xau; //Khai báo con trỏ
string xau;//Khai báo xâu
Khởi tạo giá trị cho con trỏ khi nó đóng vai trò là mảng
Thứ nhất: ta sử dụng phép gán để sao chép toàn bộ mảng lên con trỏ

p = numbers;//p là con trỏ, numbers là mảng

Thứ hai: khởi tạo trực tiếp cho từng phần tử
int *p; for (int i=0; i<20; i++){
*(p+i)=numbers[i];
}
Chương trình nhập – xuất dữ liệu bằng việc sử dụng con trỏ.
Chương trình Kết quả
#include using namespace std;
void Input(int *p, int length)
{
for (int i=0; i
cin>>*(p+i);
}
}
void Output(int *p, int length)
{
for (int i=0; i
cout<<*(p+i)<<” “;
}
}
int main()
{
int *a;
int lengtha;
cout<<”Nhap do dai: “;
cin>>lengtha;
Input(a, lengtha);
cout<<”========”<
Output(a, lengtha);
return 0;
}
Nhap do dai: 4 6
8
9
0
========
6 8 9 0
Giải thích: biến con trỏ luôn được truyền theo kiểu tham biến, do đó, chúng ta không cần bổ sung dấu & vào bên trước tên biến. Hàm Input dùng để nhập mảng số nguyên có độ dài length, hàm Output dùng để xuất dữ liệu từ mảng nguyên đó. Khi truy xuất từ biến con trỏ, ngoài cách xuất như trên, ta còn có thể viết p[i] tương ứng như mảng – p[i] và  *(p+i) đều là phần tử thứ i. Nghĩa là bạn hoàn toàn có thể viết
cin>>p[i];                cout<cin>>*(p+i);           cout<<*(p+i);
int c = p[i]+q[j];    int c = *(p+i)+*(q+j);
Việc sử dụng con trỏ để thay cho xâu cũng hoàn toàn tương tự. Nhưng bạn lưu ý, phần tử cuối cùng của nó là phần tử .

No comments:

Post a Comment