9.3 结构体指针

思考:

1.结构体指针是什么?

2.为什么有结构体指针?

3.怎么实现结构体指针?(怎么用?)

解答:

1.答:所谓结构体指针就是指向结构体的变量的指针

引出思考:我们常见的结构体指针有哪些?

答:一个结构体变量的起始地址就是这个结构体变量的结构体指针。

9.3.1 指向结构体变量的指针

例如.1

struct Student *pt//pt可以指向struct Student类型的变量或数组元素

例9.5(这个例子主要是告诉你什么是结构体变量,你如何使用它。

通过指向结构体变量的指针变量输出结构体变量中成员信息。

解题思路:

我所面对的问题

1.首先得有个结构体变量

2.其次得有个结构体指针

3.最后就是如何用结构体变量的指针输出结构体变量信息了。

因此问题就转化成解决结构体变量的构造和结构体指针的构造,还有使用输出的问题。

#include<stdio.h>
#include<string.h>//此处我在编写程序的时候忘记了导致回来在加 
int main()
{
	struct Student//结构体的初始化我忘了怎么实现 
	{
		long num;
		char name[20];
		char sex;
		float score; 
	};
	struct Student stu_1;//此处我直接忘了定义 并且我也不知到为什么要有下划线 
	struct Student *pt;
	pt=&stu_1;//下一步干什么呢? 
	stu_1.num=10101;//忘记给结构体赋初值了 并且结构体赋值方法也忘了
	strcpy(stu_1.name,"Li Lin");//此处体现了字符串不能赋值只能用字符串赋值函数复制给stu_1.name 
	stu_1.sex='M'; 
	stu_1.score=89.5;
	printf("No.:%ld\nname:%s\nsex:%c\nscore:%5.1f\n",stu_1.num,stu_1.name,stu_1.sex,stu_1.score);//输出结果
	printf("\nNo:%ld\nname:%s\nsex:%c\nscore:%5.1lf\n",(*pt).num,(*pt).name,(*pt).sex,(*pt).score);//此处就是结构体变量指针输出方法注意有() 
	return 0;
} 

反思:

这个题目暴露了我不够严谨细致的思维。

而且在做题目期间还分神,暴露出专注力不足的毛病。

程序分析:

在主函数中声名了struct Student类型,然后定义一个struct Student 类型的变量stu_1.又定义了一个指针变量p,它指向一个struct Student 类型的对象。将结构体变量stu_1。有定义了一个指针变量p,它指向一个struct Student 类型的对象。将结构体变量stu_1的起始地址赋给指针变量p,也就使p指向stu_1见图1

然后对stu_1的各成员赋值。

第一个printf函数是通过结构体变量名stu_1访问它的成员,输出stu_1的各成员的值。用stu_1的各个成员的值。用stu_1.num表示stu_1访问它的成员,以此类推。第二个printf函数是通过指向结构体变量的指针变量访问它的成员,输出stu_1各成员的值,使用的是(*p).num这样的形式。(*p)表示 p指向的结构体变量,(*p).num是p所指向的结构体变量的成员num。注意*p两侧的括号不可省略,因为成员运算符"."优先于“*”运算符,*p.num就等价于*(p.num)。

特别说明:

为了使用方便和直观,C语言允许把(*p).num用p->num代替”->“代表一个箭头,p->num表示p所指向的结构体变量中的num成员。同样,(*p).name等价于p->name。"->"被称为指向运输符

       如果p指向一个数据结构体变量stu,以下三种用法等价:

stu.成员名例子:stu.num
(*P).成员名例子:(*p).num
p->成员名例子:p->num

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夏驰和徐策

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

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

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

打赏作者

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

抵扣说明:

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

余额充值