void openUpNow(FILE *x, FILE *y)
{
x = fopen("xwhatever", "r");
y = fopen("y sao cũng được", "r");
}
int _tmain(int argc, _TCHAR* argv[ ])
{
TẬP TIN *x, *y;
openUpNow(x, y);
}
cảnh báo C4700: Biến cục bộ chưa được khởi tạo 'x' được sử dụng
cảnh báo C4700: Biến cục bộ chưa được khởi tạo 'y' được sử dụng
Biện pháp khắc phục?
Dù sao đi nữa, tôi không nghĩ đó là điều bạn muốn làm.
Giả sử bạn ước openUpNow()
Mở tập tin để x
Và y
, bạn nên sử dụng:
void openUpNow(FILE **x, FILE **y)
{
*x = fopen("xwhatever", "r");
*y = fopen("y sao cũng được", "r");
}
int _tmain(int argc, _TCHAR* argv[ ])
{
TẬP TIN *x, *y;
openUpNow(&x, &y);
// làm việc gì đó
}
Nói cách khác, bạn cần chuyển đổi con trỏx
Vày
Địa chỉ được truyền cho hàm.
Như mã của bạn bây giờ gọi openUpNow()
Không làm gì cả (và làm rò rỉ phần xử lý tệp) vì con trỏ được truyền theo giá trị.
Tôi là một lập trình viên xuất sắc, rất giỏi!