C语言单链表,为什么引用过后值会发生改变?

新手上路,请多包涵
  printf("data = %d\n",head->next->data);
  printf("data = %d\n",head->data);
  printf("data = %d\n",head->next->data);

主函数上连续printf,中间没任何操作,但是打印出来的值发生了改变。

clipboard.png

阅读 2.3k
2 个回答
感觉离segment fault只有一步之遥了。

head->next真的是个有效的指针吗?是不是已经被free过了?或者没初始化?野指针会带出什么来谁也不知道。printf不是没有副作用的,它会开辟一段缓冲区拼接字符串。head->next有可能指到那里去了。

完整程序放上来吧,现有程序完全无法定位问题原因。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进