首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

听说大神都在夜晚出没!关于结构体指针交换有关问题!

2013-11-29 
听说大神都在夜晚出没!!关于结构体指针交换问题!![解决办法]struct data *t改成struct data t你的指针t

听说大神都在夜晚出没!!关于结构体指针交换问题!!

                                                                            
[解决办法]
struct data *t;改成struct data t;
你的指针t没有指向有效的内存空间,所以发生了段错误。不需要用指针就不要用了。
[解决办法]
还有,有malloc的地方,用完一定要手动free,不然会内存泄漏的。
[解决办法]
引用:
我知道你们说的。 但是为什么我定义了struct data*t之后 令t=4 之后的交换也会出错呢?!

自己随意指定的地址仍然是非法的。就好比你不给指针分配值,那指针就没有指向的地址吗?显然是不对的。
C/C++不存在所谓的无值对象,也就是Objective-C里的NIL类型,所以指针都是有值的。
那为什么仍然无法访问?很简单,计算机只是锁住了这个内存,除非你建立了一个对象,或者向系统申请一块空间,这个时候系统就会打开这块空间的使用权,那你就能正常访问了。
但是,系统打开了使用权,却不是这个指针的默认地址,而是取了一个新的地址,然后又赋给了你。所以你根本就不可能知道计算机的有效地址在哪里,因此t=4 99%是非法的。

你要么malloc一块地址,即像系统申请,要么就不要用指针了。这里其实用struct data t是最好的。没必要用什么指针:
struct data t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;

热点排行
Bad Request.