数据结构学习笔记--结构体和指针

直接上代码,配合注释理解(只是单纯理解各种定义的方式,避免学的云里雾里)

//结构体
/*第一类结构体形式*/
struct str{				//结构体名字为str
	ElementType data;
	struct str *Next;    
}str1;					//结构体变量str1,也可以是str2、str3,就是取名字,类似于int a,b,c;
//或是
struct str2{				//无结构体变量,需要在主函数定义结构体变量	
	ElementType Data;
	struct str *Next;
};

/*第二类结构体*/
typedef struct str3{			//把结构体重定义为STR,类似于将代码中的str替换为STR										
	ElementType Data;		//此处重定义之后,STR可同时定义多个变量,STR *a,b;等价于 STR *a; STR *b;
	STR Next;				//struct str *Next;
}STR3;						//但是struct str *a,b;则是定义了一个指针a和一个结构体变量b;
//第二类结构体也可以变形
typedef struct{
	ElementType Data;
	STR Next;
}STR4;
//或是
typedef struct str STR;	//这种定义方式需要前面或后面补充结构体str的定义,是前两种定义的合体
//接着上面的,下面为定义各种指针
void main(){
//对应的结构体指针的定义
struct str *p1;		//第一类结构体
struct str2 *p2;	//第一类结构体
struct str3 *p3;	//第二类结构体
STR3 *p4;			//和上一条一样对应typedef struct str3 STR3;定义方式不同但意思一样
STR4 *p5;			//对应typedef struct STR4;

//定义好的指针有两种方式使用
p1 = (struct str *)malloc(sizeof(struct str));	//为结构体指针分配对应结构体类型的大小的空间
//或是
p1 = &str1;				//结构体指针指向对应结构体变量的首地址
//但殊途同归...
printf("p1->Data = %d",p1->Data);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值