结构体、结构体指针

一、结构体

结构体概念
什么是结构体?
结构体是我们自己创造出来的一种类型。
结构体创建的意义是什么呢?
用来解决复杂的对象。
话不多说,我们先举一个简单的例子!

#include <stdio.h>
//创建一个结构体类型
struct Book
{
	char name[20]; 
	short price;
};

int main()
{
	//利用结构体类型创建一个该类型的变量
	struct Book book = {"CSDN",66};
	printf("书名:%s\n",book.name);
	printf("价格:%d\n",book.price);
	return 0;
}

这样我们一个简单的结构体就实现了!
那如果我们要修改结构体里面的内容,应该怎么操作呢?

#include <stdio.h>
#include <string.h>
struct Book
{
	char name[20]; 
	short price;
};

int main()
{
	struct Book book = {"CSDN",66};
	strcpy(book.name, "Fancy");
	book.price=55;
	printf("书名:%s\n",book.name);
	printf("价格:%d\n",book.price);
	return 0;
}

那为什么我们改书名不直接用等号呢?而是要用 strcpy这个函数。
因为price是变量,它是可以直接赋值的,但是name不是一个变量,而是一个数组,它的本质是一个地址,因此如果我们要改name就要使用strcpy这个函数来修改!
strcpy(s1,s2)是个库函数,它的作用是字符串拷贝,将s2的内容拷贝给s1,它的头文件是string.h。
凡是结构体成员是字符串的,那我们修改都要用strcpy来进行修改!

二、结构体指针

#include <stdio.h>
struct Book
{
	char name[20]; 
	short price;
};

int main()
{
	struct Book book = {"CSDN",66};
	struct Book* p = &book;
	return 0;
}

在这里定义了一个变量p,它的类型是结构体指针,它指向book。
那我们如何通过p找到我们的书名和价格呢?

#include <stdio.h>
struct Book
{
	char name[20]; 
	short price;
};

int main()
{
	struct Book book = {"CSDN",66};
	struct Book* p = &book;
	printf("书名:%s\n",(*p).name); //通过(*p)就可以找到book,那书名就是(*p).name
	printf("价格:%d\n",(*p).price); 
	return 0;
}

上一篇文章中,我们讲了指针存放的是地址,那么我们通过解引用操作符,就可以找到book。
但是这样的操作有点繁琐,那我们如何去简化它呢?
这里介绍一个操作符 ->

#include <stdio.h>
struct Book
{
	char name[20]; 
	short price;
};

int main()
{
	struct Book book = {"CSDN",66};
	struct Book* p = &book;
	printf("书名:%s\n",p->name); //p指向book的name 指针指向对象的关系
	printf("价格:%d\n",p->price); 
	return 0;
}

总结:
. 操作符 : 结构体变量.成员
-> 操作符 :结构体指针->成员

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值