C++结构体问题?

如图,为什么会出现这个错误,怎么解决?... 如图,为什么会出现这个错误,怎么解决? 展开
 我来答
哈巨神
2021-04-10 · 超过18用户采纳过TA的回答
知道答主
回答量:52
采纳率:100%
帮助的人:10.6万
展开全部
首先您要理解内存模型。无论是一般的PC,或是手机、平板,暂时还离不开冯诺伊曼架构,内存有从零开始的编号。CPU可以通过这编号来访问内存的这个位置下的数据。
所谓指针,就是存储了这样一个编号。比如,在内存的第2396位置存储了一个整数29,则当您使用 int* p = (int*) 2396; 语句后,*p 便是29。一般的,任意变量都有一个地址,即其在内存中被存放的位置。
现在再来看未被赋值的指针。任何C++课本告诉我们,如果一个临时变量未赋值,则其值是不确定的。(究其底层,是因为函数运行在栈上,函数变量,也即局部变量,位置在栈上,而栈上的数据是不会被清除的,所以未赋值的变量内很可能是前一个或多个函数的某个变量的值,也可能是之前传递的参数、编译器添加的东西。一言以蔽之,曰“不确定”。)指针未赋值,本身其不确定,也就是您不知道它会指向什么地址,指向什么位置;说不定是个有效位置,说不定是个关键位置,说不定是空位置(比如,在内存只有x个“格子”的情况下访问第x号位置是无意义的,注意内存从0开始编号),说不定是禁止访问的位置(操作系统的核心位置)。回到您的问题,之所以kend可以访问,是因为kend暂时指向的位置是个有效位置,但照样可以看到data、next、pre的值是无意义的;而khead应该是指向了访问不了的位置(根据经验,大概率是0,即空指针)。
科博尔
2024-10-31 广告
QT400-18是一种球墨铸铁材料,QT代表“球铁”,400表示其抗拉强度为400MPa,18则表示延伸率为18%。该材料属于铁素体型球墨铸铁,具有良好的韧性和塑性,能够承受高冲击振动及扭转等动、静载荷,特别在低温工作条件下具有较好的冲击性... 点击进入详情页
本回答由科博尔提供
arongustc
科技发烧友

2021-04-07 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:5817万
展开全部
你没给它分配内存,当然它就无法访问。指针必须分配内存这是常识吧
更多追问追答
追问
同样处理的kend为什么没有问题
大佬,可以正面回答一下这个常识问题吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式