您的位置:首页 > 其它

指针在结构体中使用应注意

2010-09-23 17:00 232 查看
指针是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掉没用空间是一个号的习惯。

这些也是我以前经常犯得错误,其实现在偶尔疏忽也犯,写出来给大家提个醒,同时也是给自己一个警示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: