指针在结构体中使用应注意
来源:互联网 发布:达观数据陈运文简历 编辑:程序博客网 时间:2024/05/14 20:30
指针是C语言中的难点,很多人对他的使用掌握的不是很好,使用过程中出现很多的问题。
使用指针的时候需要注意几点:
1、分配空间
2、初始化
3、释放
这些可能很多人都知道,但是用的时候往往会忘记做这些工作,这带来的结果就是“段错误”,对于初学者,这个错误很难定位。可谓是深恶痛绝吧。
常出现的错误有几种
1、指针没有初始化。
2、越界。
3、指针free掉后,被使用。
我这里说的是,指针在结构体中的运用。
可能你定义一个结构体如:
typedef struct test1
{
int a;
int b;
char * c;
}test1_t;
typedef struct test2
{
char *d;
test1_t *e;
}test2_t;
很多时候我们使用这个结构体类型的时候只是定义一个变量。如:
test2_t *test_struct;
且为其分配空间
test_struct = (test2_t *)malloc(sizeof(test2_t));
这样就结束了吗,我们就可以对结构体中的数据进行操作了吗,答案是不,
我们对test_sruct->c操作时发现c也是一个指针变量,那么我们也必须为他分配空间,同样,test_sruct->e,test_sruct->e->c都得为其分配空间,也就是说这种情况下我们应该一层一层的为他们去分配空间,避免漏掉,出现错误。
空间申请了,我们也使用了我们也使用了,那么是不是就结束了,呵呵,还差一步,等这些分配了的空间没用了的时候,我们一定要将他们free掉,可能你说,我写得程序从来不用干这个也没事呀,其实不然,这只是说明你的程序足够的小,系统资源足够负担这些浪费掉的空间,当你的程序足够大的时候,你可能对这些空间斤斤计较了,free掉没用空间是一个号的习惯。
这些也是我以前经常犯得错误,其实现在偶尔疏忽也犯,写出来给大家提个醒,同时也是给自己一个警示
- 指针在结构体中使用应注意
- 结构体嵌套指针应注意的问题
- 在JSP中使用SmartUpload下载应注意的问题
- jquery在IE中使用append应注意的问题
- jquery在IE中使用append应注意的问题
- 太阳能热水器在使用过程中应注意哪些问题?
- malloc()函数在keil中使用应注意什么
- 使用指针应注意的问题
- Jsp中使用return时应注意
- 在C#中使用Retun,并访问数据库时应注意犯的错误
- 在GridView中使用三目运算符应注意的问题
- 在spring+hibernate3框架中使用HibernateDaoSupport应注意的问题
- 在nhibernate 1.2 中使用sqlite时应注意sqlite的ado.net的提供者
- 在css样式中字体使用应注意的一些问题
- 在构造函数中使用new时应注意的事项
- 在ETel第三方API(CTelephony)中使用User::WaitForRequest() 应注意的问题
- 在SQL Server 2008 中使用DECLARE-SELECT时应注意的细节
- 在构造函数中使用new时应注意的事项
- C语言静态函数库的制作和使用方法
- bash shell启动配置文件
- 识别 SQL Server 的版本
- keil MDK编译器(V4.01)与H-JTAG的问题
- jsp设计模式
- 指针在结构体中使用应注意
- boost asio io_service学习笔记
- (KMP) poj POJ 1961 Period
- vc中的使用技巧和常见错误
- HibernateException
- 移植到ARM的qt4.6.3显示中文的问题
- Linux热插拔
- 滚码加密
- FCKConfig.ToolbarSets 的优化配置