简单的指针链表学习

简单的指针链表

指针链表用到了指针和结构体。
一.结构体使用
其中结构体的定义方式有多种,但是一不小心就会搞错。下面总结如下:
1.最可能出错的地方是先定义结构体,再对其整体进行初始化。如果在定义结构体变量的时候没有初始化,那么后面就不能全部一起初始化了;这样编译会出错。正确的办法是定义变量后马上初始化。如果实在要先定义,再初始化,也只能对结构体内的变量逐个初始化。举例如下:
struct VAL={int a;int b; int c;};
struct VAL val1,val2,val3;
val1={1,2,3};
val2={4,5,6};
val3={7,8,9};
这样是错误的,正确的做法如下:
a)struct VAL={int a;int b; int c;};
struct VAL val1={1,2,3},val2={4,5,6},{7,8,9};
b)struct VAL={int a;int b; int c;}val1={1,2,3},val2={4,5,6},{7,8,9};
c)struct VAL={int a;int b; int c;};
struct VAL val1,val2,val3;
val1.a=1;val1.b=2;val1.c=3;
d)typedef struct VAL={int a;int b; int c;}val;
val val1={1,2,3},val2={4,5,6},{7,8,9};
2.结构体在定义的时候是不会分配内存空间的,只有在定义变量后才会真正分配空间
3.结构体整体空间是占用空间最大的成员(的类型)所占字节数的整数倍。这是对齐的问题。
二 指针链表的实现

#include "stdio.h"
struct student
{
	char name[100];
    int score;
	struct student *next;//指向自身的类型
};
int main()
{
    struct student a={"zhangsan",85},b={"lisi",86},c={"wangwu",87},*p,*head;
	head=&a;
    a.next=&b;
	b.next=&c;
	c.next=NULL;
	p=head;
	do
	{
		printf("name:%s  score=%d\r\n",p->name,p->score);
		p=p->next://非常巧妙
	}while(p!=NULL);
	return 0;
}

运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值