30/09/2018, 16:57
Sử dụng biến chung cho nhiều hàm trong C++
Mình đang làm đồ án môn học bằng ngôn ngữ C++. Viết các hàm sắp xếp. Gặp rắc rối như sau:
// Hàm đọc file
DocFile()
{
//Đọc dữ liệu từ file input lấy ra số lượng phần tử của lưu vào biến n
n = 10;
// Lấy các giá trị tiếp theo lưu vào mảng a
a[] = {1,2,3,4,5,6,7,8,9,0}
}
Sau đó mình muốn dùng lại biến n = 10 này và mảng a để đưa vào hàm sắp xếp như:
// Hàm sắp xếp
SelectionSort(a, n);
Thì hàm SelectionSort
này không nhận được giá trị của 2 biến a
và n
Xin hỏi cách khắc phục hay giải pháp khác. Xin cảm ơn.
Bài liên quan
về file thì em chưa học nhưng anh thử dùng tham chiếu thử xem .
Biến
n
vàa[]
này là biến cục bộ, bạn không thể sử dụng như vậy được. Hoặc bạn phải truyềnn
vàa[]
từ ngoài vào hàm đọc file để lưu các dữ liệu này vàon
vàa[]
sử dụng con trỏ. Hoặc là gọi hàm sort trong hàmDocFile
Bạn nói rõ hơn cái này dùm được không? Nhờ bạn cho đoạn code mẫu càng tốt.
Xin cảm ơn.
Để code được đẹp và dễ hiểu, bạn có thể tạo 1 file header để khai báo các biến, định nghĩa một số giá trị.
Ví dụ:
Khi đó bạn include vào file bạn cần chạy, cần khi nào thì gọi khi đó thôi.
return thì chỉ return được một giá trị duy nhất (con trỏ, mảng, biến, …). Muốn lấy ra (hoặc thay đổi) nhiều giá trị khi kết thúc hàm thì truyền tham chiếu & (mảng thì không cần) hoặc truyền vào biến con trỏ Chẳng hạn
DocFile(a[], &n)
Thực chất không cần thiết và không nên. Không ngẫu nhiên mà chúng ta luôn học được cách kèm theo giá trị n để biết số lượng phần tử của mảng.
Cách ngu: dùng biến toàn cục. Mình không biết tại sao biến toàn cục vẫn còn tồn tại nhưng không bao giờ mình xài
Theo e thấy thì n với a[] của a không được khai báo trong hàm
DocFile()
=> đó là biến toàn cục ạ?