01/10/2018, 15:24

Sự khác nhau giữa pointer và array

Cho em hỏi trong C++ pointer và array có khác nhau không ạ?

Em thử trong code thì hai cái đều cho địa chỉ, nhưng đọc các trang tiếng Anh thì nói là khác nhau (em đọc không hiểu mấy).

Em mong nhận được sự giúp đỡ.

viết 17:31 ngày 01/10/2018

array là 1 dãy nhà
pointer là 1 mẩu giấy ghi địa chỉ nhà

1 dãy nhà có thể được nhắc đến thông qua địa chỉ căn nhà đầu tiên số lượng nhà trong dãy nhà đó

tới đây thì hiểu rồi ha @_@

viết 17:30 ngày 01/10/2018

nếu bạn xài C++11 thì có thể thay mảng C int a[10]; bằng mảng C++: std::array<int, 10> a;. Viết dài hơn nhưng khi truyền mảng vào hàm sẽ rõ ràng và đúng đắn hơn:

//void f(const int a[10]); //a chỉ là 1 con trỏ, ko phải mảng 10 phần tử
//Ví dụ
//  int b[5];
//  f(b); //vẫn gọi được, nhưng truy cập b[5], b[6]... sẽ gây lỗi runtime

//void f(const int* a, size_t n); //cần phải thêm 1 biến n nữa để biết độ dài mảng a,
                                  //nhưng a ko nhất thiết phải là mảng 10 phần tử
//Ví dụ
//  int b[5];
//  f(b, 10); //vẫn gọi được, nhưng truy cập b[5], b[6]... sẽ gây lỗi runtime

void f(const std::array<int, 10>& a); //mảng a phải đúng là mảng 10 phần tử
//Ví dụ
//  std::array<int, 5> b;
//  f(b); //ko gọi được

nếu muốn mảng ko rõ số phần tử thì xài std::vector<int> v(n); //mảng v có n phần tử

void f(const std::vector<int>& v); //v là mảng động có số phần tử n = a.size()

thêm cái <> vô ngứa mắt thiệt, cộng với từ vựng mới “vector” ko quen nhưng từ từ sẽ quen @_@

Bài liên quan
0