cuốn sách gpt4 ai đã làm

Sự cố với các trường được khởi tạo thông qua con trỏ

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 11:46:32 hai mươi bốn 4
mua khóa gpt4 Nike

Câu hỏi của tôi liên quan đến các chức năng sau:

/*Thêm giao dịch vào đầu danh sách liên kết được đính kèm với tài khoản.*/
void Bank::Worker::UpdateTransactionHistory(int account_number, chuỗi giao dịch, Ngân hàng *our_bank_ptr) {

giao dịch_node new_trans;
new_trans.transaction = giao dịch;

if (our_bank_ptr->accounts[account_number].head == nullptr) { //Nếu đây là giao dịch đầu tiên
our_bank_ptr->tài khoản[số_tài khoản].head = &new_trans;

} else { //Nếu đây không phải là giao dịch đầu tiên, hãy ngắt kết nối tài khoản khỏi danh sách giao dịch hiện tại, kết nối giao dịch mới với tài khoản rồi kết nối danh sách cũ với giao dịch mới.
nhiệt độ giao dịch_node;
temp = *(our_bank_ptr->accounts[account_number].head);

our_bank_ptr->tài khoản[số_tài khoản].head = &new_trans;

new_trans.next = &temp;
}

if (our_bank_ptr->accounts[account_number].head) // ở đây chuỗi đúng được in ra
cout << our_bank_ptr->tài khoản[số_tài khoản].head->giao dịch;
}

Nó có nghĩa là cập nhật trường giao dịch của new_trans và sau đó liên kết nó với phần còn lại của danh sách giao dịch cho tài khoản nhất định. Ngay trước khi tôi quay lại từ chức năng giao dịch cập nhật, tôi kiểm tra để đảm bảo chuỗi đã được thêm chính xác. Dòng cuối cùng của hàm là cout << our_bank_ptr->tài khoản[số_tài khoản].head->giao dịch; , xuất chính xác chuỗi giao dịch.

Tuy nhiên, khi tôi trở về từ hàm và gọi ngaygiống hệt nhau dòng mã, trình biên dịch cho tôi biết rằng các trường giao dịch mà hàm cập nhật vẫn chưa được khởi tạo. Điều này bất chấp thực tế là nó được truyền vào dưới dạng một con trỏ.

Cái quái gì vậy!? Tôi nghĩ nếu tôi chuyển thông tin đến một hàm thông qua một con trỏ, thì bất cứ điều gì tôi làm với thông tin đó trong quá trình thực hiện hàm đó sẽ là vĩnh viễn? Tôi đang thiếu gì ở đây?

Cảm ơn sự giúp đỡ của bạn,

Adam

câu trả lời hay nhất

Bạn đang đặt con trỏ trỏ tới một biến cục bộ (new_trans). Khi hàm thoát, biến này bị hủy và con trỏ trở nên lơ lửng. Vì vậy, cố gắng hủy đăng ký nó sẽ dẫn đến hành vi không xác định. Trong trường hợp của bạn, điều này hiện được biểu hiện dưới dạng in đơn vị. Nhưng nó có thể làm bất cứ điều gì khác.

Nếu bạn cần con trỏ ở đó và bạn cần chúng trỏ đến các giá trị liên tục, bạn phải phân bổ động các giá trị đó. Nhưng câu hỏi thực sự là: Bạn có cần hướng dẫn không?

Về C++ - gặp vấn đề với các trường được khởi tạo thông qua con trỏ, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/19661284/

hai mươi bốn 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress