Chào mọi người, mình muốn hỏi về cách biến hoạt động trong hàm. Hiện giờ mình có kiểu bigInt
với member num
là một mảng và một hàm inp()
dùng để nhập dãy số vào bigInt.num
:
#include <iostream>
struct bigInt {
int num[100];
};
bigInt inp(std::string s) {
bigInt n;
int dem = 0;
for (int i = s.length() - 1; i >= 0; i--) {
n.num[dem] = s[i] - 48;
dem++;
};
std::cout << "Bien n: " << &n << '\n'<< "Bien dem: " << &dem << '\n';
return n;
};
Đây là hàm main()
:
int main() {
std::string tam;
bigInt a, b;
std::cin >> tam;
a = inp(tam);
std::cin >> tam;
b = inp(tam);
return 0;
}
Trong lúc chạy, có một điều bất thường là lần chạy tiếp theo của hàm sử dụng lại dữ liệu của biến của lần chạy trước đó. Khi kiểm tra địa chỉ của các biến thì nó không hề được thay đổi:
123
Bien n: 0x7ffd67f083e0
Bien dem: 0x7ffd67f083b8
456
Bien n: 0x7ffd67f083e0
Bien dem: 0x7ffd67f083b8
Mình có một câu hỏi là tại sao chương trình không xóa đi dữ liệu của biến cục bộ sau khi chạy xong hàm?
Mình cũng mới bắt đầu học C++ nên có thể có sai sót. Mong được mọi người giúp đỡ.