指针字符串无效是为什么

为什么前一步输出链表里的信息还是正确的,后面在另一个函数里面进入链表却出现了一些变成了字符串无效,乱码的情况?

img

望采纳!!点击该回答右侧的“采纳”按钮即可采纳!!
我猜测这个问题很可能是由于在函数之间传递了指针而导致的。
如果在函数内部对指针所指向的内存进行了修改,那么在函数调用结束后,这些修改依然会保留。
举个例子:

struct Node {
  int data;
  Node* next;
};

void printList(Node* head) {
  Node* p = head;
  while (p != NULL) {
    cout << p->data << " ";
    p = p->next;
  }
  cout << endl;
}

void modifyList(Node* head) {
  Node* p = head;
  while (p != NULL) {
    p->data *= 2;
    p = p->next;
  }
}

int main() {
  Node* head = NULL;
  // 创建一个链表
  // ...
  printList(head);
  modifyList(head);
  printList(head);
  return 0;
}
在这个程序中,函数 printList 输出了链表中的元素,在 modifyList 函数中,你对每个节点的数据进行了修改。这意味着,在函数调用结束后,链表中的所有节点的数据都已经被修改过了。因此,在调用 printList 函数输出链表时,你会看到修改后的数据。