指向结构体的指针必须初始化
2016-02-29 16:36
405 查看
#include<stdio.h> main() { struct abc{ int a;}; struct abc *p; p->a=1; printf("%d",p->a); } 这个编译没有问题,但是运行是段错误,请问为什么呢
因为你定义了一个结构体指针p,用来指向此类结构体,但是你却没有给他赋值,此时p的值为NULL,你并没有在内存中为p分配任何空间,所以p->a=1这句就会出段错误。 修改方法1:可以给p分配一段内存空间,并使其指向此空间: p=(struct abc *)malloc(sizeof(struct abc)); p->a = 1; 方法2:可以让p指向一个已存在的内存空间: struct abc temp; p=&temp; p->a = 1;
相关文章推荐
- IOS_可移动的UIImageView(随手指移动)
- 最短路径算法复杂度总结
- pdf怎么转换成word格式
- AnnotationConfigBeanDefinitionParser are only available on JDK 1.5 and higher
- 时间复杂度和空间复杂度
- 各种数据库再spring中的配置(转载)
- cocos2d-x之场景转换特效
- 关于Redis中的数据类型
- Android中app卡顿原因分析示例(转载)
- IOS公司开发者账号申请详细教程
- 简单说一下RecyclerView
- FreeSwitch中使用HTTP服务接受话单
- Linux(2)---Crtl+z与Crtl+c
- 《Android开发艺术探索》读书笔记——IPC机制
- Salesforce Process Builder - 进程生成器
- soj 2804 Longest Ordered Subsequence (II) LIS nlogn
- JAVASE基础 Item -- 多线程,并发2
- ZHS16GBK的数据库导入到字符集为AL32UTF8的数据库
- protobuf-net 与 C#中几种序列化的比较
- varnish 301 跳转 到 www