目录
1.struct的作用:
(1).解释
struct是结构体关键字,结构体是一种集合,它们里面的成员变量的类型可以相同,也可以不同,可以是数组,也可以是指针,甚至可以是结构体(这个的使用比较复杂,我们在‘6’里详细阐述)。
(2).与数组对比
①数组里存储的变量是相同类型,而struct里变量可以是不同类型。
②数组里的变量是连续的,而struct里的变量是否连续比较复杂,我们后续详细分析。
2.struct的定义
struct 结构体名{
结构体所包含的变量或数组
};
例:
struct stu
{
char name[20];
int age;
int sex;
float chinese;
float math;
float english;
float sum;
};
//struct stu stu1;(使用的时候)
3.typedef的使用
tpyedef:给一个类型(包括struct)起一个别名,在我看来,typedef相当于起了一个公认的外号。
我们将上面的代码用typedef改写一下:
typedef struct stu
{
char name[20];
int age;
int sex;
float chinese;
float math;
float english;
float sum;
}student;
//student stu1;(使用的时候)
这样使用起来更方便
4.struct的使用
(1)定义结构体
struct stu stu1;(使用的时候)
(2)使用结构体变量
#include<stdio.h>
typedef struct Student
{
char name[20];
int age;
float chinese;
float math;
float english;
float sum;
}stu;
int main()
{
stu stu1 = {"wu",28,80,90,100,270};
printf("%s,%d,%4.1f,%4.1f,%4.1f,%4.1f", stu1.name, stu1.age, stu1.chinese, stu1.math, stu1.english, stu1.sum);
}
在使用时,要注意我们在赋值时,可以初始化,在初始化时要注意数据类型,注意格式:
int,float | 1 |
char | '1' |
char a[] | "1" |
后来赋值的时候,要注意字符串,其它变量可以用‘=’,但是字符创比较有个性,他必须用‘strcpy’,这个关键字存在于“#include<string.h>”。
如果结构体指针怎么调用
#include<stdio.h>
#include<stdio.h>
#include<typeinfo>
typedef struct Student
{
float chinese;
float math;
float english;
}stu;
int main()
{
stu stu1 = {80,90,100};
stu *a=&stu1;
printf("%d %d %d", a->chinese, a->english, a->math);
printf("%d", (*a).chinese);
}
5.typedef与define的区别
define是简单地替换
typedef是给数据类型一个新的名字
首先我们介绍一个关键字typeid
它存在于“#include<typeinfo>”,typeid 关键字的作用就是获取一个表达式是类型,返回表达式的类型,例;
我们分别用define和typedef来定义指针,具体操作如下:
#include<stdio.h>
#include<typeinfo>
#define POINT int*
typedef int* point;
int main()
{
int* a, b;
POINT c, d;
point e, f;
printf("%s %s\n", typeid(a).name(), typeid(b).name());
printf("%s %s\n", typeid(c).name(), typeid(d).name());
printf("%s %s\n", typeid(e).name(), typeid(f).name());
}