01/10/2018, 14:18
Tại sao viết 'void chon(int a[], int n)' không báo lỗi nhưng 'void chon(int a[], int *n)' lại báo lỗi?
http://codepad.org/bO6hnmqn
đoạn code của e đấy ạ
cho e hỏi là cái hàm Chon của e, e khai báo là void Chon(int a[ ], int n) thì khi chạy nó sẽ không báo dòng nào ở error nhưng sao e ghi hàm như này void chon(int a[ ], int *n) thì khi chạy nó vẫn chạy được như bình thường, nhưng sao nó lại có những dòng báo lỗi gì ở dưới compiler vậy ạ
Bài liên quan
Nếu chỉ có dòng đó đổi thì không thể nào code chạy đúng được.
nó vẫn chạy được bạn nha, bạn ko tin cứ copy chạy thử đoạn code ạ
khi bạn để hàm : void Chon(int a[ ], int n) thì nó chạy như bình thường
nhưng khi bạn thêm con trỏ *n : void Chon(int a[ ], int *n) thì nó vẫn chạy như bình thường…chạy vẫn được, nhưng nó lại báo mấy cái dòng gì ở dưới compiler ấy
thế dòng lỗi đó là dòng gì?
n cần truyền vào Chon là số nguyên, sao lại sửa thành con trỏ? C nó nguy hiểm thế đấy, đưa cái gì nó cũng chạy được, nhưng có chạy đúng ko mới là vấn đề?
edit: Chon có thay đổi giá trị của n, vậy thì phải truyền con trỏ mới đúng. Truyền int n là ko đúng vì n truyền vào Chon là 1 bản copy của n nằm trong main.
edit nữa: đâu có cần n trong main làm gì đâu vì nó gọi Chon có 1 lần, vậy đừng truyền n vào Chon mà tạo int n trong Chon luôn, truyền vô làm gì…
uk ha tại mình gọi tất cả các hàm trong hàm Chon mak đâu gọi trong hàm main đâu nên để biến n trong hàm Chon luôn cần gì đưa lên tham số hình thức làm gì nhỉ