Hàm có thể chỉnh sửa dữ liệu của các phần tử trong mảng Tên mảng là địa chỉ của phần tử đầu tiên.. Mảng đối tượng[r]
(1)(2)Nội dung chính
Định nghĩa mảng Mảng nhiều chiều Mảng trỏ
(3)1 Định nghĩa mảng
Mảng (Array)
Là tập vị trí nhớ liên tiếp
Các phần tử mảng có tên
(4)Khai báo mảng
type arrayName[ arraySize ];
int c[ 10 ]; // mảng c gồm 10 số nguyên float d[ 3284 ]; // mảng d gồm 3284 số thực
Có thể khai báo nhiều mảng kiểu
int b[ 100 ], x[ 27 ];
Truy nhập tới phần tử mảng
Xác định thông qua tên mảng số:
arrayname[ position number ]
(5)Khởi tạo mảng
Sử dụng vòng lặp for: gán giá trị cho phần tử
trong mảng
Sử dụng danh sách khởi tạo:
int n[ ] = { 1, 2, 3, 4, };
Nếu không đủ giá trị khởi tạo phần tử cịn lại nhận giá trị mặc định
Nếu giá trị khởi tạo nhiều kích thước mảng báo lỗi
Gán tất phần tử với giá trị
int n[ ] = { };
Nếu kích thước mảng khơng khai báo danh sách khởi tạo xác định:
int n[] = { 1, 2, 3, 4, };
(6)Tham số mảng
Tham số mảng biểu diễn kiểu liệu kích thước
của mảng
void display(float [n][m]);
Hàm khơng cần biết kích thước mảng phải
biết kích thước phần tử mảng void myFunction(int n[]);
void display(float [][m]);
Khi gọi hàm, ta cần truyền tên mảng
int myArray[ 24 ]; myFunction( myArray);
Mảng truyền theo kiểu truyền tham chiếu
(7)Mảng đối tượng
Có thể lưu trữ đối tượng mảng Khi khai báo mảng, cần cung cấp:
Kiểu đối tượng lưu trữ Số lượng đối tượng
Chương trình dịch tính kích thước
(8)Ví dụ: Mảng đối tượng
{
public: CAT()
{ itsAge = 1; itsWeight=5; } ~CAT() {}
int GetAge() const { return itsAge; } int GetWeight() const { return itsWeight; } void SetAge(int age) { itsAge = age; } private: int itsAge; int itsWeight; }; int main() { CAT Litter[5]; int i;
for (i = 0; i < 5; i++)
Litter[i].SetAge(2*i +1); for (i = 0; i < 5; i++) {
cout << "Cat #" << i+1<< ": "; cout << Litter[i].GetAge() << endl; }
(9)2 Mảng nhiều chiều
Mảng nhiều chiều coi mảng
mảng.
Khai báo:
double sales[2][2]; sales[1][0]=2.5;
Khởi tạo:
(10)3 Mảng trỏ
Ta đặt tồn mảng lên vùng nhớ tự CAT *Family = new CAT[500];
Family co trỏ trỏ tới phần tử mảng có 500
phần tử CAT
Family trỏ tới có địa phần tử Family[0]
Sử dụng trỏ để truy nhập vào phần tử
mảng
CAT *Family = new CAT[500];
CAT *pCat = Family; //pCat trỏ vào Family[0] pCat->SetAge(10); // gán Family[0] 10 pCat++; // trỏ vào Family[1]
(11)Phân biệt trỏ trỏ tới mảng và mảng trỏ
Cat FamilyOne[500] CAT * FamilyTwo[500];
CAT * FamilyThree = new CAT[500];
FamilyOne mảng có 500 phần tử CAT FamilyTwo mảng có 500 trỏ trỏ tới
CAT
FamilyThree trỏ trỏ tới mảng
(12)4 Xâu ký tự
Trong C++, xâu ký tự mảng phần tử kiểu
char kết thúc ký tự null
Có hai cách khai báo:
char Greeting[] = { `H', `e', `l', `l', `o', ` `, `W','o','r','l','d', `\0' }; char Greeting[] = "Hello World";
Sử dụng cin.get()
#include <iostream.h> int main()
{
char buffer[80];
cout << "Enter the string: ";
cin.get(buffer, 79); // get up to 79 or newline cout << "Here's the buffer: " << buffer << endl; return 0;
(13)Lớp string
string lớp chuẩn C++
Các ký tự string đánh từ Khởi tạo đối tượng string
string s1 (“Man”); string s2=“Beast”; string s3;
Ta sử dụng tóan tử tóan học, logic …
đối tượng string
s3 = s1;
(14)string toán tử >>
Hàm getline(cin, string str): lưu thông
tin từ luồng vào chuẩn đưa vào str.
Ví dụ:
string full_name;
cout<< “Enter your fullname:”; getline(cin, full_name);
(15)Tìm kiếm
string s1=“Hello world”; string s2=“world”;
int n=s1.find(s2);
//n=6
find() trả vị trí lần s2 xuất
hiện s1.
(16)Chỉnh sửa
erase(int i1, int i2): xóa xâu có chiều dài i2 bắt
đầu từ vị trí i1
s=“Hello world”; s.erase(1,4); //s=“H world”
replace(int i1, int i2, string s2): thay xâu s2
từ vị trí i1, số lượng ký tự thay i2
insert(int i, string s): chèn xâu s vào từ vị trí thứ i append(int i, char c): chèn i ký tự c vào cuối xâu substr(int i1, int i2): trả xâu từ i1, có kích
thước i2
(17)Truy nhập đến ký tự string
Sử dụng tóan tử []
Hàm at(i): trả vị trí ký tự thứ i
trong xâu
Nếu i>length() báo lỗi Ví dụ:
string s=“Hello world”; char c;