Tôi đã viết một chương trình khá phức tạp so với những gì tôi đã xử lý cho đến bây giờ. Anyways tại một số điểm tôi có nghĩa vụ phải viết một chức năng mà sẽ thao tác một danh sách struct. Tôi đang cố gắng làm cho câu hỏi này càng đơn giản càng tốt vì vậy tôi đã viết ra một đoạn mã khá đơn giản chỉ để tham khảo. Đây là điều: lúc đầu tôi gọi testf
từ một chức năng khác cung cấp cho nó current
hợp lệ cũng như i
với giá trị bằng 0. Điều này có nghĩa là testf sẽ tự gọi khoảng 100 lần trước khi bắt đầu truy cập phần còn lại của mã. Đây là khi tất cả các phiên bản được tạo của testf
sẽ bắt đầu được giải quyết.Làm cách nào để chỉnh sửa con trỏ tới nút danh sách từ một hàm trong đệ quy?
void testf(listnode *current, int *i) {
wordwagon *current2;
current2 = current;
if (*i < 100) {
*i = *i + 1;
current2 = current2->next;
testf(current2, i);
}
current = current->next;
return;
}
Nếu, chúng ta hãy nói, tôi đã đủ kết nối các nút danh sách sắp xếp của tôi, là current = current->next;
cách chính xác cho các "cuối cùng" chức năng testf để truy cập và chỉnh sửa giá trị của người gọi current2
(đó là của chức năng này current
), hoặc tôi có sai lầm khủng khiếp không? Nếu tôi là, cách để thay đổi các biến của hàm người gọi từ bên trong hàm được gọi và chắc chắn chúng sẽ không biến mất ngay khi hàm được gọi trả về? Tôi thấy khó mà nắm bắt được cách con trỏ hoạt động.
Rất có khả năng tôi đã để lại thông tin quan trọng hoặc tôi chưa đặt câu hỏi đủ rõ ràng. Xin vui lòng thông báo cho tôi nếu đó là trường hợp vì vậy tôi có thể chỉnh sửa trong bất cứ điều gì bạn cần.
Xin cảm ơn trước.
Bạn phải vượt qua một poi nter đến con trỏ, hoặc sửa đổi 'current' trước khi bạn recurse –
+1 để cung cấp một ví dụ đơn giản –