一、结构体的定义
1、定义bir这个变量,这个变量中包含day、month、year三个变量
struct bir
{
int day;
int month;
int year;
};
2、结构体中可以定义另一个结构体变量
struct bir
{
int day;
int month;
int year;
};
struct Student
{
char name[20];
int age;
struct bir bbi;//可以使用在此结构体之前定义的东西
//struct Student a;//error 此时还不知道Student这个结构体有多大,不知道如何分配内存
struct Student *p;//但指针定义是可以的
};
3、初始化
struct Student stu1 = {
"liubei",20};
struct Student stu2;//也可以,但这是局部变量,如果没有初始化,值会随机
4、如何访问变量
stu1.age = 38;
5、定义全局变量
(1)B、C是通过结构体A定义的两个全局变量
struct A
{
int a;
}B,C;
(2)加上typedef后,表示B、C就是A的别名
二、typedef的用法
不可以再结构体中直接赋值,因为结构体相当于数据类型,还没有给他分配内存
1、typedef为类型重定义,作用一:给一个变量类型起别名
typedef unsigned long long uint64;
//后面遇到uint64类型指的就是unsigned long long
typedef int* Pink;//在此程序中,int*等价于Pink
2、c语言中报错(Student为未声明的标识符)
int main()
{
Student stu3 = {
"caocao", 18 };//问题①:c++文件中可以使用,
//但c语言中会报错(Student为未声明的标识符),必须在前面加上struct
return 0;
}
解决方法:
//形式①
typedef struct Student Student;