C语言之struct 和 typedef struct

本文详细介绍了C语言中struct用于创建数据结构,如何声明和实例化变量,以及typedef的作用——定义类型别名。还涵盖了单链表的定义与操作。重点讲解了如何通过typedef简化变量定义并理解其在链表中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

struct

用法

struct tag { 
    member-list
    member-list 
    member-list  
    ...
} variable-list ;

实例

struct Books
{
	
	int   book_id;
    char  *bookname;
}

说明:
(1)上面声明了一个结构的“变量类型”,我们可以通过上面去实例化一些变量
如下:

int main(){


	struct Books a;
	a.book_id = 1;
	a.bookname = "Old Man and Sea";
	printf(a.bookname);
	
	return 0;
}

(2) 可以在建立struct 的时候,就实例化一些变量对象

struct Books
{

	int   book_id;
	char  *bookname;
}booka,bookb,*bookc;


int main(){


	struct Books a;
	a.book_id = 1;
	a.bookname = "Old Man and Sea";

	booka.bookname = "hello world";
	booka.bookname = 2;
	bookb.bookname = "price and prejudce";
	bookb.bookname = 3;
	(*bookc).bookname = "test pointer";
	(*bookc).book_id = 4;

	printf(a.bookname);
	
	return 0;
}

typedef

定义与用法

作用是用来取别名使用的

typedef unsigned char BYTE;

此时后面都可以使用BYTE 来代替 unsigned char 进行直接定义别的变量了

typedef 与 struct

单链表的定义

typedef struct Node
{
	int data;
	struct Node* pNext;
} NODE,*pNODE;

说明:
(1) 下面的代码 表示一个声明了一个结构体

struct Node
{
	int data;
	struct Node* pNext;
}

(2) typedef 表示将这个东西另外起一个名字叫做NODE

(3) *pNODE 表示 起了一个别名,叫做pNode ,那么就表示pNODE 定义的变量就是指针类型的
(4) 结构体内部,定义了一个变量和一个指向自己的指针

链表创建的几个点:

pNode a; (创建一个指向节点的指针)

NODE a; (创建 一个真实的节点)

pNODE *L; (创建一个指向节点的指针的指针)

	pNODE *L;   //  声明的是一个指向地址(是指向节点的地址)的地址 头指针
	//NODE a; // 声明的是一个实体的对象
	pNODE a,b; // 声明的是一个地址
	b = (pNODE)malloc(sizeof(NODE));
	a = (pNODE)malloc(sizeof(NODE));
	b->data = 11;
	b->pNext = NULL;
	a->data = 10;
	a->pNext = b;
	L = &a;
	printf("anssss:%d\r\n", (*L)->data);
	printf("anssss:%d\r\n", a->data);
	printf("anssss:%d\r\n", a->pNext->data);
	printf("anssss:%d\r\n", b->data);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没有水杯和雨伞的工科男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值