Cho tôi hỏi 2 câu nhé !
1. Tôi đọc thấy tài liệu nào cũng bảo kiểu int có dung lượng 2 bytes vậy mà lúc
PHP Code:
cout << sizeof(int);
sao nó lại ghi ra là 4 bytes nhỉ ??? 
2. Nếu dùng con trỏ khai báo mảng :
Cách 1:
PHP Code:
...
int *head = new int[4], *p;
for ( p=head ; p<head+4 ; p++ )
cin >> *p;
...
Cách 2:
PHP Code:
...
int *len, *p = new int;
len = p+4;
for ( ; p<len ; p++ )
cin >> *p;
...
Cách 3:
PHP Code:
...
int *p = new int, i;
for ( i=0 ; i<4 ; i++ )
cin >> *(p+i);
...
Theo tôi hiểu là thế này:
- Cách 1: Cấp phát 16 bytes cho biến con trỏ head. Lúc đầu địa chỉ con trỏ p được gán bằng địa chỉ con trỏ head rồi sau mỗi lần cin thì p tăng dần đến khi 16 bytes đều được ghi hết.
- Cách 2: Cấp phát 4 bytes cho biến con trỏ p. (cin >> *p), p tăng... Kết thúc quá trình nhập thì chỉ có 2 biến con trỏ: len và (p+4)
- Cách 3: Như cách 2. Chỉ khác khi kết thúc quá trình nhập thì có các biến: i,p,p+1,p+2,p+3,p+4.
Vậy cho tôi hỏi: ở cách 2 và 3 thì 4 bytes kế tiếp được dùng để cin trong lần thứ 2 là 4 bytes trống bất kì trong bộ nhớ chứ không phải là 4 bytes liền kề ngay sau 4 bytes trước. Hiểu như vậy có đúng ko ? Trong 3 cách trên thì dùng cách 1 là tốt nhất phải ko ? vì bộ nhớ đã cấp phát sẵn 16 bytes roài, không sợ p trỏ lung tung như trong cách 1 và 2.
Mình mới học nên diễn đạt kém, dài dòng ! Mong mọi người giúp đỡ ! Thankssssss !
Thôi rồi ! post nhầm box rồi ! Nhờ mod chuyển sang box "Hỏi đáp kĩ thuật C++ ", xin lỗi nhé !