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 ạ

rogp10 viết 16:27 ngày 01/10/2018

Nếu chỉ có dòng đó đổi thì không thể nào code chạy đúng được.

Cần Giúp Đở viết 16:27 ngày 01/10/2018

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

viết 16:29 ngày 01/10/2018

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ì…

Cần Giúp Đở viết 16:23 ngày 01/10/2018

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ỉ

Bài liên quan
0