em xem bai 40 cua anh ltd va chay chuong trinh trong dev c++ nhung ket qua cua gia tri cua cac phan tu da detele thi khac nhau.Mong moi nguoi giai thich giup em.
Tu ngay tham gia dien dan em chi toan hoi chu chua giup do ai do trinh do qua kem,em rat la ngai, ko biet trong dien dan co cac muc don gian ko de em jup moi nguoi.
Cấp phát động trong c++ chạy ở dev c++ và visual studio tại sao khác nhau
int *arr = new int[x];
dấu ngoặc vuông chứ ko phải dấu ngoặc tròn. Dấu ngoặc tròn new int(x)
là “gần” tương đương với 2 dòng:
int *ptr = new int; //ptr trỏ tới 1 số nguyên
*ptr = x;
nếu học tới hướng đối tượng thì em sẽ hiểu T(x)
là hàm tạo (constructor) của class T
. Nó ko bao gồm 2 dòng như trên mà chỉ gói gọn trong 1 dòng. Ở đây int(x)
cũng có thể hiểu là hàm tạo của int
.
This post was flagged by the community and is temporarily hidden.
???
la sao
em co sua lai nhung ket qua y nhu vay
Bạn đã delete
vùng arr
thì vùng đó không còn ý nghĩa.
Việc bạn tiếp tục gán giá trị cho vùng nhớ đó dẫn đến Undefined Behavior
, giá trị bạn có được là vô tình có được. Bạn sử dụng compiler khác hoặc máy khác hoặc chương trình khác sẽ cho kết quả khác.
delete[] arr;
là xóa mảng cũ mà arr
trỏ tới, muốn có mảng mới có x+10
phần tử thì phải cấp phát mảng mới cho arr
:
delete[] arr;
arr = new int[x+10];
Là viết chữ thì nên có thêm dấu đó bạn…
Là : Làm ơn viết chữ có dấu …giùm
Em đã phát hiện ra.Visual khi xóa 1 gt thi dc 1 gt mac định nào đó là 123423842 j đó.Còn trong dev-c++ thi gt mặc định cho 1 biến là 0.=>x=0; I=0; I+1 đến khi I=x+10=I+10.Em hiểu như thế có j mọi người chỉ bảo them.Thank mọi người trừ Kulteam
thank bạn.Ko ngờ mình reset ổ c lại nên ko có Unikey.sory.Xin lỗi