常见用法
结构体一般用法
用法一
#include<iostream>
using namespace std;
struct stu{
int a,b;
};
int main()
{
// struct stu s;
stu s;
s.a=10,s.b=20;
cout<<s.a<<' '<<s.b;
stu *p = &s;
cout<<endl;
cout<<p->a<<' '<<p->b;
return 0;
}
用法二
#include<iostream>
using namespace std;
struct stu{
int a,b;
}st1,st2,*p;
//此时st1,st2为struct stu的变量,p为指向struct stu的指针
int main()
{
st1.a=1,st1.b=1;
st2.a=2,st2.b=2;
cout<<st1.a<<' '<<st1.b<<endl;
cout<<st2.a<<' '<<st2.b<<endl;
stu s;
s.a=10,s.b=20;
cout<<s.a<<' '<<s.b;
p = &s;
cout<<endl;
cout<<p->a<<' '<<p->b;
return 0;
}
使用typedef定义结构体
typedef的作用:起别名
用法一
#include<iostream>
using namespace std;
struct student{
int a,b;
};
// 通过typedef起别名
// 此时struct student等价于stu
typedef struct student stu;
int main()
{
stu s;
s.a=10,s.b=20;
cout<<s.a<<' '<<s.b;
stu *p = &s;
cout<<endl;
cout<<p->a<<' '<<p->b;
return 0;
}
用法二
#include<iostream>
using namespace std;
// 通过typedef定义结构体
// 此时结构体类型为stu
typedef struct{
int a,b;
}stu;
int main()
{
stu s;
s.a=10,s.b=20;
cout<<s.a<<' '<<s.b;
stu *p = &s;
cout<<endl;
cout<<p->a<<' '<<p->b;
return 0;
}
用法三
直接为结构体定义指针类型
#include<iostream>
using namespace std;
typedef struct stu{
int a,b;
}*p;//p是指向struct stu类型的指针,不是变量
int main()
{
stu s;
s.a=10,s.b=20;
cout<<s.a<<' '<<s.b;
stu *p1 = &s;
cout<<endl;
cout<<p1->a<<' '<<p1->b;
p p2= &s;
p2->a=2,p2->b=2;
cout<<endl;
cout<<p2->a<<' '<<p2->b;
cout<<endl;
cout<<p1->a<<' '<<p1->b;
return 0;
}
用法四
同时为结构体类型和指针类型起别名
#include<iostream>
using namespace std;
typedef struct student{
int a,b;
}*p,stu;//p是指向struct stu类型的指针,不是变量
int main()
{
stu s;
s.a=10,s.b=20;
cout<<s.a<<' '<<s.b;
stu *p1 = &s;
cout<<endl;
cout<<p1->a<<' '<<p1->b;
p p2= &s;
p2->a=2,p2->b=2;
cout<<endl;
cout<<p2->a<<' '<<p2->b;
cout<<endl;
cout<<p1->a<<' '<<p1->b;
return 0;
}