C语言指向结构体的指针

C语言指向结构体的指针

C语言指向结构体的指针

格式:

结构体类型	变量名称  ,* 指针名称 = &变量名称;

案例如下
定义结构体并定义结构体指针让其指向结构体

#include<stdio.h> 
#include<string.h> 
typedef struct stud{//定义了一个结构体  
	char Id[10];//学号 
	char Name[10];//姓名 
	int China;//语文成绩
	int Math;//数学成绩
	int English;//英语成绩	 
}STU;
void main(){
	STU a = {"S1","王杰",125,132,120},*p=&a;//p现在指向的是a,但是p和a都是结构体类型 
}

模拟图如下
在这里插入图片描述

如何通过指针获取结构体当中的值

格式:
格式1:结构体变量名.成员名;
格式2:(*结构体指针).成员名;
格式3:结构体指针->成员名;//得到的是指针所指向结构成员变量的值
实例如下:
第一种情况:a.Name //获取到王杰
第二种情况: (*p).Name;//这里点号的优先级要比*大所以要将*括起来先获取*p指向的对象再获取对应的值
第三种情况(用的最多的写法):p->Name;//得到的是p所指向结构成员变量的值

程序案例一、
#include<stdio.h> 
#include<string.h> 
typedef struct stud{//定义了一个结构体  
	char Id[10];//学号 
	char Name[10];//姓名 
	int China;//语文成绩
	int Math;//数学成绩
	int English;//英语成绩	 
}STU;
void main(){
	STU a = {"S1","张海军",79,67,57},*p=&a;//p现在指向的是a,但是p和a都是结构体类型 
	printf("%s\t%s\t%d\t%d\t%d",p->Id,p->Name,p->China,p->Math,p->English);
}

在这里插入图片描述

程序案例二、
#include<stdio.h> 
#include<string.h> 
typedef struct stud{//定义了一个结构体  
	char Id[10];//学号 
	char Name[10];//姓名 
	int China;//语文成绩
	int Math;//数学成绩
	int English;//英语成绩	 
}STU;
void output(STU *a,int n){//注意z这里有两种写法还有一种写法就是STU a[]、这里的指针和数组是一回事 
	int i;
	for(i=0;i<n;i++){
		printf("%s\n",a->Name);
		a++;
	}
}
void main(){
STU a[8]={
	{"S1","张一军",127,150,100}, 
	{"S2","张二军",75,85,89}, 
	{"S3","张三军",67,58,86}, 
	{"S4","张四军",120,101,87}, 
	{"S5","张五军",136,100,82}, 
	{"S6","张六军",141,52,83}, 
	{"S7","张七军",125,85,81},  
	{"S8","张八军",136,65,79}
	};//p指向a[0] 
	output(a,8);
}

在这里插入图片描述

#include<stdio.h> 
#include<string.h> 
typedef struct data{
	int x;
	int *y;
}DATA;
void main(){
	int a[4]={1,2,3,4};
	DATA k = {a[0],&a[0]},*p=&k;
	printf("%d",*(p->y));
}

在这里插入图片描述
模拟图如下,在结构体当中如果一个指针需要获取结构体当中指针的地址则需要使用->的方式去获取。指向结构体的指针,并得到其对应结构体当中的指针指向的地址值。
在这里插入图片描述

发布了26 篇原创文章 · 获赞 23 · 访问量 1974

猜你喜欢

转载自blog.csdn.net/qq_44757034/article/details/104592460