结构体是为了方便数据的管理储存,写代码的效率而进行设计的一种数据类型.
其申请的方式为
struct <结构体的名称>
{
变量类型 变量名;
变量类型2 变量名;
...
}
结构体的申请一般在主函数的外面
结构体的使用初始化赋值
方法一:
struct <结构体名称> <结构体变量名>={ 变量1,变量2,变量3 };
方法二:
struct <结构体名称> <结构体变量名>;
<结构体名称>.<结构体变量名> = 变量值;
还可以使用结构体指针来对数据进行更改
具体操作见代码:
#include<stdio.h>
#include<stdlib.h>
#define scanf scanf_s
struct student //仅仅只是定义了一个新的数据类型
{
int age; //定义一个结构中的整型变量
float socre; //定义一个结构体中的浮点型变量
char sex; //字符类型
};
int main(void)
{
struct student ming = {21,66.5,'m'};//初始化结构体变量
struct student *pming = &ming;//申请结构体指针pming存放ming的地址
//修改结构体内的变量
ming.age = 22;//修改ming的年龄
pming->age = 21;//等价于(*pming).age,等价于 ming.age
pming->socre = 66.6F;//66.6在c语言中是double类型,如果希望66.6是float类型,则需要输入66.6f或66.6F
/*
pming->age所指向结构体ming其中age那个变量的地址
*/
printf("ming的年龄为%d\n ming的成绩为%f\n ming的性别为%c\n", pming->age, ming.socre,ming.sex);//66.6不能准确存储;只能存储一个近似值
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Student
{
int age;
float score;
char sex;
};
void InputStudent(struct Student *Pming)//形式参数是结构体指针变量对结构体变量进行修改
{
Pming->age = 23;
Pming->score = 66.6;
Pming->sex = 'f';
}
void OuputStudent(struct Student ming)//对结构体变量进行输出
{
printf("%d %f %c",ming.age,ming.score,ming.sex);
}
int main(void)
{
struct Student ming;
//struct Student *pming = (struct Student*)malloc(10);
//pming = &ming;
InputStudent(&ming);//对结构体变量进行输入,应该发送地址给函数
OuputStudent(ming);//对结构体变量进行输出,可以直接发送变量给函数,也可以发送地址个函数,但是发送地址给函数可能对变量的值进行修改,对总体而言不安全.
/*
发送地址给函数,那么程序所用的内存较小,但是危险性就比较高
*/
/*
指针的重要性
1.指针可以快速的传递数据
2.可以使函数返回一个以上的值
3.能够直接访问硬件
4.能够方便的处理字符串
5.是理解面向对象编程的基础
*/
return 0;
}