C语言——结构体重点知识理解

C语言——结构体重点知识理解

  1. 结构体相关定义
#include <stdio.h>

// 第一种方定义式:先定义,后命名 
struct Student //含义:定义了一个struct Student数据类型,是一种结构体类型 
{
	int age;
	float score;
	char sex;
};  //分号不能省 
/*
//第二种定义方式 :定义的同时 命名 
struct Student 
{
	int age;
	float score;
	char sex;
}st2;

//第三种定义:只定义一个结构体 
struct 
{
	int age;
	float score;
	char sex;
}; //3种方式: 推荐第一种方法 
*/
int main(void)
{
	//1.赋值方式 :直接赋值 
	struct Student st1 = {80, 66.6, 'F'};
	
	// 2、如何取出结构体中的每一个成员:法一: 结构体名.成员名 
	struct Student st2; //这也是另外一种赋值方式,与1.一样的效果 
	st2.age = 60; //直接 结构体名.变量名 即可取出也可同时赋值
	st2.score = 66.6;
	st2.sex = 'F';
	
	//法二:通过指针 :指针变量名->成员名 
	struct Student * pst = &st1;//&st3不能写成st3 
	pst->age;//pst->age;其内部自动转化为*pst.age; 
				//故pst->age;等于 *pst.age;等于 st1.age;注意理解 
	
	printf("%d %f %c\n", st1.age, st1.score, st1.sex);
	printf("%d %f %c\n", st2.age, st2.score, st2.sex);
	printf("%d %f\n", pst->age, st1.score ); //用两种方法分别取出结构体中的成员。 
	
	return 0;
 } 

  1. 通过函数对结构体变量进行输入输出
#include <stdio.h> 
#include <string.h>
struct Student 
{
	int age;
	char sex;
	char name[100]; 
};
//void  IntputStudent(struct Student stu);//函数1.前置声明 
void  IntputStudent(struct Student *);//声明 ,指针的声明可以不写名字 
void  OutputStudent(struct Student ss);//声明 

int main(void)
{
	struct Student st; 
	IntputStudent(&st);//对结构体变量进行输入 
//	printf("%d, %c, %s\n", st.age, st.sex, st.name);
	OutputStudent(st); //对结构体变量进行输出 
	return 0;
}

//输入函数 
void  IntputStudent(struct Student * pstu)//pstu只占4个字节 
{
	(*pstu).age = 10; //*pstu.age等于pstu->age;也等于主函数里面的st.age 
	strcpy(pstu->name, "张三"); //不能写为pstu->name = "张三“;固定写法,记住就行 
	pstu-> sex = 'F'; 	
}	

//输出函数 
void OutputStudent(struct Student ss)
{
	printf("%d, %c, %s\n", ss.age, ss.sex, ss.name);
}
/*
//1.本函数无法修改st中变量的值 ,因为此函数一运行完就被释放了,在主函数里输出的时候,那些值还是没变的,可以通过前面的指针一节笔记理解 
void  IntputStudent(struct Student stu)
{
	stu.age = 10;
	strcpy(stu.name, "张三"); //不能写为stu.name = "张三“; 
	stu.sex = 'f'; 	
}
*/ 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值