标题:结构体里嵌套一个结构体数组指针
只看楼主
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
以下是引用ditg在2020-7-3 11:51:40的发言:


呵呵

没初始化 没赋值的指针 叫做野指针
版主和内核都给指针赋值
所以不是野指针 有什么问题

有什么意见请说出来讨论
阴阳怪气的呵呵 对学习没有帮助
并且显得你小肚鸡肠 没有端正的学习心态

https://zh.
2020-07-03 11:56
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:705
专家分:2043
注 册:2010-11-11
得分:0 
野指针的问题,个人觉得和编码者的能力有很大的关系。在高内聚低耦合的模块化的前提下,如果编码者能力非常强,可以在逻辑上完全排除野指针产生的影响和BUG,那么,即便在代码中处处遗留野指针又能如何?
当然如果相关代码需要被他人使用,那么就需要做到严谨,不留一个野指针。
野指针的概念其实就是因为编码不严谨、逻辑不严密,然后为了降低BUG出现做的一致性处理。
当然,如何看代野指针,每个人都有自己的独到之处。不过,读百家之代码,吸取其精华及精妙之处,调自身之BUG,做到尽可能地提升自己地编码和逻辑能力,才是大家共识的王道。
2020-07-03 13:30
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
得分:0 

正常沟通交流没有问题,是非对错实在不愿评说……

梦想拥有一台龙芯3A-4000
2020-07-03 15:39
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
以下是引用ditg在2020-7-3 15:39:23的发言:


正常沟通交流没有问题,是非对错实在不愿评说……

这个帖子的大部分回复是我在帮你解释野指针
正常沟通很成问题
坦白说 正常的话 根本不应该存在这段沟通
题主问 怎么访问
我说 野指针 不能访问
要么就不管我
要么就说哦
要么就帮题主解释一下怎么处理野指针的错误
这三种情况 你能正确理解野指针的时候的正常沟通

而不是说 谈不上野指针

https://zh.
2020-07-03 15:57
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
得分:0 

比如吧,楼主写的具体哪个地方是野指针?

梦想拥有一台龙芯3A-4000
2020-07-03 16:04
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
以下是引用ditg在2020-7-3 16:04:50的发言:


比如吧,楼主写的具体哪个地方是野指针?

楼主定义了
MENU_s  Top_Mode;
要访问 seat_s的成员
因为
Top_Mode.seat[0]
Top_Mode.seat[1]
Top_Mode.seat[2]
既没有初始化 也没有赋值
所以 这三个指针都是野指针
所以不能访问 seat_s的成员

所以咯 你直到现在还不知道我说的野指针在哪里
这不是沟通很有问题吗

https://zh.
2020-07-03 16:11
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
得分:0 

问“请教一下怎样访问seat_s这个结构体里边的每个成员,及初始化”,我觉得楼主在问“这个定义的结构体变量Top_Mode怎样初始化”

答:“那是野指针 不能访问 也谈不上初始化

我认为:可以访问只是结果可能随机,因为没有使用(后面纯版写了个程序,执行过程中进行赋值),所以没有野指针的问题,换句话说,定义了一个指针变量,但是没有赋初值,是否就叫野指针?

梦想拥有一台龙芯3A-4000
2020-07-03 16:32
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
以下是引用ditg在2020-7-3 16:32:45的发言:


问“请教一下怎样访问seat_s这个结构体里边的每个成员,及初始化”,我觉得楼主在问“这个定义的结构体变量Top_Mode怎样初始化”

答:“那是野指针 不能访问 也谈不上初始化”

我认为:可以访问只是结果可能随机,因为没有使用(后面纯版写了个程序,执行过程中进行赋值),所以没有野指针的问题,换句话说,定义了一个指针变量,但是没有赋初值,是否就叫野指针?

访问seat_s这个结构体里边的每个成员
你可能没有发现 这里有2个结构体类型seat_s 和 MENU_s
楼主定义了一个 MENU_s变量 问的是访问seat_s的成员 我不知道你误解了什么
对于楼主定义的MENU_s变量 没有创建seat_s 更谈不上访问seat_s是成员 创建的是3个seat_s的指针

不是可以访问但结果随机
你可以访问seat_s
但不能访问seat_s的成员
能理解这两个说法的区别吗
访问 seat_s
比如
Top_Mode.seat[0] = NULL;
这个做法是完全没问题的

但是访问 seat_s的成员指的是
Top_Mode.seat[0]->x = 0;
这是野指针操作 明白了吗

为什么这么简单的东西都需要我仔仔细细的解释
你就不能自己仔细看题好好理解吗

https://zh.
2020-07-03 16:43
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
得分:0 

楼主MENU_s  Top_Mode;   时已经分配好内存了,所以纯版后面用代码进行赋值,再换一句话说,都能赋值了,前面不能初始化吗?还有上面又变野指针“操作”了,到底定义时叫野指针,还是“操作”使用时叫野指针,你到底在说啥?

梦想拥有一台龙芯3A-4000
2020-07-03 17:02
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
以下是引用ditg在2020-7-3 17:02:57的发言:


楼主MENU_s  Top_Mode;   时已经分配好内存了,所以纯版后面用代码进行赋值,再换一句话说,都能赋值了,前面不能初始化吗?还有上面又变野指针“操作”了,到底定义时叫野指针,还是“操作”使用时叫野指针,你到底在说啥?

定义了Top_Mode
写Top_Mode.seat[0] 没问题
读Top_Mode.seat[0] 是你说的结果可能随机
但楼主问的不是 读写Top_Mode.seat[0]
楼主问的是 读写Top_Mode.seat[0]->x
这就是解引用野指针操作了



[此贴子已经被作者于2020-7-3 17:12编辑过]


https://zh.
2020-07-03 17:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-502368-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.120146 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved