69,368
社区成员
发帖
与我相关
我的任务
分享
#include "stdio.h"
#include "malloc.h"
typedef char ElemType;
typedef struct node
{
ElemType data;
struct node *next;
}LinkList;
void InitList(LinkList *L)//初始化单链表
{
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
}
void main()
{
int i;
ElemType e;
LinkList *L;
InitList(L);
}
#include "stdio.h"void InitList(LinkList *L)//初始化单链表
{
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
}
void InitList(LinkList **L)//初始化单链表
{
*L=(LinkList *)malloc(sizeof(LinkList));
(*L)->next=NULL;
}
#include "stdio.h"
#include "malloc.h"
typedef char ElemType;
typedef struct node
{
ElemType data;
struct node *next;
}LinkList;
void InitList(LinkList **L)//初始化单链表
{
*L=(LinkList *)malloc(sizeof(LinkList*));
(*L)->next=NULL;
}
void main()
{
int i;
ElemType e;
LinkList *L;
InitList(&L);
L->data = 'A';
printf("linkdata = %c\n",L->data);
}
void InitList(LinkList **L)//初始化单链表
{
*L =(LinkList *)malloc(sizeof(LinkList));
(*L)->next=NULL;
}
对比下下面两段代码
LinkList *L;
void InitList(LinkList *L)
{
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
}
int l;
void InitInt(int l)
{
l = 5;
} //这个应该知道吧
打个比方吧
LinkList *L;
&L = 0x101
此时L的值未知
如图
0x100+---+
| |
0x101+---+
| ? | --> L &L = 0x101,L的值未知
0x102+---+
| |
0x103+---+
| |
0x104+---+
InitList(L); 只是把L的值(?)传进去,并没有把L的地址(0x101)传进去
0x200+---+
| |
0x201+---+
| ? | --> l &l = 0x201,l的值未知
0x202+---+
| |
0x203+---+
| |
0x204+---+
InitInt(l); // 只传递了l的值(?),并没有传地址(0x201)
两者是不是很相似呢
所以应该怎么改 你懂的