theo mình nghĩ p ở đây chỉ là 1 con trỏ trỏ đến 1 biến kiểu int thôi. Cái phép toán cộng p+=1 của bạn là dịch đến 1 địa chỉ mới và 1 ở đây nó hiểu sẽ là địa chỉ mới đó cách địa chĩ cũ 1 số int tức là 4 byte
Em làm thế này
như thế p ở đây liệu cỏ phải 1 mảng ko nhỉ , thắc mắc quáCode:#include <iostream.h> int main() { int *p=new int; for(int i=0;i<4;i++) { p+=1; cin >> *p; } for(int i=3;i>=0;i--) { cout << *p; p--; } system("pause"); }
Phép toán trên là cộng địa chỉ nên ko phải là mảng phải ko các bác . hu
Nhắc nhở source phải để trong tag [code].Alviss
theo mình nghĩ p ở đây chỉ là 1 con trỏ trỏ đến 1 biến kiểu int thôi. Cái phép toán cộng p+=1 của bạn là dịch đến 1 địa chỉ mới và 1 ở đây nó hiểu sẽ là địa chỉ mới đó cách địa chĩ cũ 1 số int tức là 4 byte
nothing is impossible
Lúc đầu bạn tạo ra 1 biến con trỏ kiểu int.Sau đó :Code:int *p=new int; for(int i=0;i<4;i++) { p+=1; cin >> *p; }
p += 1; => con trỏ đó sẽ trỏ đến 4 bytes kế tiếp vì con trỏ có kích thước 4 bytes
cin >> *p => nơi mà con trỏ trỏ tới sẽ nhận giá trị nhập vào
Cái này thì bạn xuất các giá trị tại nơi do con trỏ trỏ tới ra màn hình.Code:for(int i=3;i>=0;i--) { cout << *p; p--; } system("pause");
Con trỏ cũng có thể được xem như là 1 mảng .
...Every step that I take is another mistake to you...I'm sorry mom..
Cái gì trong vòng kiểm soát = code của mấy cậu thì mấy cậu quản lý, Code này có lỗi trầm trọng đấy. Code này cấp phát 4 byte (new int) mà đòi write tới 16 bytes, không chết mới là lạ.
Tui có gần 10 năm kinh nghiệm debug code của các coder đã tốt nghiệp ĐH IT, các cậu chưa đủ khả năng bắt bẻ tui đâu.
Đã được chỉnh sửa lần cuối bởi TQN : 20-10-2007 lúc 11:43 PM.
Bài làm trên có lỗi sử dụng mảng ko nhỉ
Nếu là lỗi thì lỗi thế nào ạ
trùi TQN đã nói rõ vậy rùi còn không hiểu, cái bài đó nhìn qua là đã biết lỗi rùi.
Em thật sự chưa hiểu chỗ này anh T àh. Em không thấy được ở chỗ nào ghi "write tới 16 bytes" trong đoạn code trên. Anh chỉ em rõ hơn đi.Code này cấp phát 4 byte (new int) mà đòi write tới 16 bytes, không chết mới là lạ.
Vòng for đó Rồng, cấp 4 byte new int. Sau đó vào vòng for lại seek con trỏ p tới 4 byte tiếp theo, cin vào vùng nhớ này, làm 4 lần. Thành ra 16 byte kế sau 4 byte vừa cấp bị write lên, còn 4 byte đầu lại không hề đụng tới nó.
bài này mình nghĩ là cộng địa chỉ cho con trỏ , sau đó ghi giá trị cho nó
Sửa lại thế này được ko vậyCode:#include <iostream.h> int main() { int *p=new int; for(int i=0;i<4;i++) { int so; cin >> so; p+=1; *p=so; } for(int i=3;i>=0;i--) { cout << *p; p--; } system("pause"); }
mà đoạn trên cho p+=1; xuống dưới cin >> *p là được phải ko nhỉ
cin >> *p;
p+=1;