mọi người hãy để ý nếu như mình xây dựng hàm nhân matrix như sau thì lại ko dùng đc thoát khỏi hàm mọi giá trị của matrix C lại trở lại như cũ trong khi tham số truyền vào rõ ràng là địa chỉ so sánh hàm nhân matrix này ko khác gì với hàm cộng matrix nhưng tại sao ko sử dụng đc??? tiếp theo mình hỏi nếu như mình sd turbo C++ thì ko cần cấp phát bộ nhớ mà vẫn sd đc con trỏ trỏ tới con trỏ (**a) mà ko cần cấp phát bộ nhớ (tức là ko cấp phát mà vẫn dùng đc a[j]), trong ko nếu mình dùng g++ để complie thì lại phải cấp phát mới dùng đc thế là sao? có phải đó là sự khác biệt giữa turbo C++ với g++ ko?? Và nếu như xài turbo C++ mình xây dựng hàm cấp phát bộ nhớ gắn liền với việc nhập số như hàm dưới đây thì sao ko dùng đc mà phải tách chúng ra làm 2 hàm ,1 hàm cấp phát , 1 hàm nhập thì mới dùng đc (việc này chưa thử với g++) Code: như vậy là sao ai giải thích giúp mình với
Mình chưa có thời gian xem nhiều nhưng copy + paste vào VC++ 6 thì bug tùm lum, sau khi sửa cho chạy được thì có vẻ chưa được ổn lắm, có lẽ bạn nên xem lại xem? edit1: Hàm Matrix có gõ sai: void deletematrix(int **a,int m) { for(int i=0;i<m;i++) delete [] a[i]; //i chứ ko phải m delete [] a; } edit2: Mình thử thì thấy chương trình cộng hay nhân ma trận đều tốt, ko có vấn đề gì. Còn câu hỏi về cấp phát bộ nhớ động của bạn mình ko hiểu ý bạn lắm, nhưng TC++ khá cũ rồi còn G++ trong GCC là tuân theo chuẩn ANSI (hay ISO gì đó) C++ mới nhất nên có nhiều thay đổi, bạn nên tìm trên mạng để biết được các thay đổi này> Còn cái câu cuối cùng thì sau khi thoát hàm nhap bạn ko giải phóng bộ nhớ à? Nếu bạn ko giải phóng thì bộ nhớ này sẽ ko sử dụng được và thành rác, bạn nên tạo thêm 2 tham chiếu đến vùng bộ nhớ này và chuyển về hàm chính sau khỉ thoát khỏi chương trình (thay kiểu hàm)