Chinaunix首页 | 论坛 | 博客
  • 博客访问: 511912
  • 博文数量: 174
  • 博客积分: 8001
  • 博客等级: 中将
  • 技术积分: 1840
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-04 19:30
文章分类

全部博文(174)

文章存档

2011年(1)

2010年(24)

2009年(149)

我的朋友

分类: C/C++

2009-03-05 17:44:48

1,对于int **matrix使用:

matrix=(int **)malloc(sizeof(int)*N*N);

是不对的,将造成地址被当作了一维数组来解析。应该正确使用二维数组的抽象,如:

matrix=(int **)malloc(sizeof(int *)*N);
for(i=0;i<N;i++)
{
    matrix[i]=(int *)malloc(sizeof(int)*N);

}

2,链表的单元定义:

typedef struct
{
    int a;
    struct cellT *link;
}cellT;

虽然能够工作,但是会给出警告,如:

pointer to incomplete type

这是因为内部的struct关键字表示这个类型会在其后定义,但是struct cellT这个类型没有定义过,所以应该:

typedef struct cellT
{
    int a;
    struct cellT *link;
}cellT;

这样就可以避免警告。

另外,想链表的内存释放工作的完成:

for(cp=cell, np=cp->link; cp!=NULL; cp=np, np=cp->link)
{
    free(cp);

}

这样存在一个问题,就是最后会有一个np对cp==NULL时的一个地址解析,这样会造成一个运行时错误而终止程序,应该是:

for(cp=cell, np=cp->link; cp!=NULL; cp=np, np=(cp==NULL?NULL, cp->link))
{
    free(cp);
}

阅读(1124) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:STL概述

给主人留下些什么吧!~~