求助:创建链表出错
#include <stdio.h>
#define N 9
typedef struct Node
{ int info;
struct Node *next;
}LNode, *LinkList;
LinkList Creat_List(LinkList list,int n) /*创建链表 */
{
int i;
LNode *p,*q;
p = (LinkList)malloc(sizeof(LNode));
if(list != NULL)
list-> next = p;
for(i=0; i <n; i++) /* 在链表的尾部插入 */
{
q = (LNode *)malloc(sizeof(LNode));
q-> info = i;
q-> next = NULL;
p = q;
p = p-> next;
}
return list;
}
void main(void)
{
int i;
LNode *p;
LinkList list;
list = (LinkList)malloc(sizeof(LNode));
list=Creat_List(list,N);
p = list-> next;
for(i=0; i <N; i++)
{
printf( "%d ",p-> info);
p = p-> next;
}
getch();
}
为什么得不到我想要得结果呢!
理论上得结果应该是012345678.
int *p;
int *list;
list = (int *)malloc(sizeof(int));
p = (int *)malloc(sizeof(int));
*list = 12;
p = list;
和
int *p;
int *list;
list = (int *)malloc(sizeof(int));
*list = 12;
p = list;
两者之间有什么不同?
前者p和list 拥有各自的空间,执行p = list后p和list仍然指向各自的空间.两个空间储存的地址相同.
后者只给list分配了空间,执行p = list后p和list 都指向同一个空间.
不知道我分析的正不正确,望高手指点!
[解决办法]
int *p;
int *list;
list = (int *)malloc(sizeof(int));
p = (int *)malloc(sizeof(int));
*list = 12;
//这里p和list各自有自己的动态空间
p = list;//用p指向list的内存,从而原来p拥有的内存泄漏了(无法回收了)
int *p;
int *list;
list = (int *)malloc(sizeof(int));
*list = 12;
p = list
没有问题,只有一块分配的内存p 和list同时指向