您好、欢迎来到现金彩票网!
当前位置:平安彩票 > 访问冲突 >

vs2012调试0x01204357 处有未经处理的异常: 0xC00005: 读取位

发布时间:2019-05-01 15:35 来源:未知 编辑:admin

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部这里的我能看到第一个问题是:insert的head参数虽然是指针,但是实际上还是以值传递方式传入,而你在insert代码里判断head为空的情况下,对head进行赋值,从而初始化head的方法是错误,你只是改变了insert的参数的值,没有对main中的head起到任何作用。这里你可以用引用的方式传入,即insert(PNODE& head...),或者insert(PNODE* pphead...)的方式,而用后一种方式,你需要用if (*head)的方式进行判断(假定pphead不为空)。

  这里最主要的问题是plist1和plist2,在接下来的insert调用后依然为空,所以print会报空指针错误。更多追问追答追问insert传进去的是指针,怎么还会是传值啊?追答注意x86下参数的传递方式是通过压栈来完成(不考虑特殊调用约定),即指针的值——即地址会被压入栈上,而这个存放参数的区域和main中list1的位置是不同,你修改的是参数的值,而非main中list1的值。

  其实无论怎样,你传递参数只是一份copy,不会影响原始的值,除非使用指针,但是由于你想修改的是指针本身,所以必须用指针的指针。追问PNODE = struct Node* ,所以PNODE& head = struct Node* &head??这是什么定义啊追答鉴于你用vc来编译,所以支持c++的语法,struct Node* &代表对Node*的引用,这种效果上类似于C中的指针,即部分等价于Node**。所以一下代码有相同效果:

  如果楼主是用c,那么用PNDOE* 即可,忽略上述回答中的PNODE&。

  这里你改变了head的值,即使它指向的位置与list1不一样了,所以改变head-var的值不等于list1-var的值!

http://arismarketing.net/fangwenchongtu/50.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有