Thầy mình bảo chỉ bảo đảm giá trị cho n+1 phần tử, cỏn các phần tử sau đó thì giá trị có thể thay đổi. Mong các bạn giúp mình với
Thầy bạn nói vậy là sai rồi, bạn hỏi lại xem có lẽ thầy bạn nhầm chăng ?
Bạn cứ thử khai báo thêm chục phần tử cũng chẳng sao, đơn giản là vì mãng của C++ không có boundary checking. Mình đã in ra sizeof array rõ ràng không có chuyện n + 1 phần tử được :
PHP Code:
#include <iostream>
int main(){
int A[2];
cout << "Size of A " << sizeof(A) << endl;
A[0] = 1;
A[1] = 3;
A[2] = 12;
A[3] = 4;
A[4] = 100;
cout << "opps " << sizeof(&A[4]) << endl;
cout << "Size of A " << sizeof(A) << endl;
cout << "what =" << A[0] + A[1] + A[2] + A[3] + A[4] << endl;
}
Thường thì nó sẽ crash hoặc không nếu mình làm cách này, vì thực chất vùng nhớ sau vị trí cuối sẽ bị overwriteten.
Giả sử mãng khai báo A[2]
[4 bytes] [4 bytes] [4 bytes] [ 3 không tồn tại ] [ 4 không tồn tại ]
2 thằng 3 và 4.... do nó là vùng nhớ kế tiếp mãng nên nó cũng có 4 byte chứ thực ra nó không có, nếu mình gán tức là nếu chỗ đó có dữ liệu nào trước đó sẽ bị ghi đè lên.