0
点赞
收藏
分享

微信扫一扫

【大话数据结构》学习体悟2-1

Aliven888 2022-02-09 阅读 87

《大话数据结构》学习体悟

关于结构体和指针的使用

1.结构体的申明

typedef struct Node
{
	int data;
	struct Node *next;
}Node ,* LinkList;

2.创建结构体指针变量,指针没有初始化,指针引用结构体成员会报错。

LinkList L,P; //定义结构体指针
L->data  //程序报错
L=P; //初始化结构体指针
L->data //程序允许不初始化

原因是指针在初始化之前,指针只知道的指向的是某个类型,指针的值不确定(指针的地址是确定的,声明指针的时候就开辟了内存空间),引用指针,起指向的内容不确定(指针在初始化之前,不能取出指针的值)。

3.调用函数,传递参数时,切记传递的参数值是不会通过四则运算改变的,通过指针才能够改变参数值。

LinkList InitList(LinkList L)
{
    L=(LinkList)malloc(sizeof(Node));  
    printf("初始化函数建立的头结点地址:%p\n",L);
    if(!L)
        return ERROR;
    L->next=NULL;    /* 指针域为空 */                
    return OK;
}

这里初始化函数的作用是无效的,函数里面L的值发生了改变,函数外面L的值不变

正确的做法是:

Status InitList(LinkList *L) 
{ 
    *L=(LinkList)malloc(sizeof(Node)); /* 产生头结点,并使L指向此头结点 */
    if(!L) /* 存储分配失败 */
            return ERROR;
    (*L)->next=NULL; /* 指针  域为空 */
     printf("线性表的地址:%p\n",*L);
    return OK;
}
举报

相关推荐

0 条评论