结构体类体
1、结构体构造类型
struct student{
};
(1)定义成员的方式与定义普通变量的方式一样
(2)成员列表必须用一对花括号括起
(3)结构体名可以省略
2、先定义结构体类型在定义结构体变量
//A方法:先构造在定义
struct student{
int sn;
int age;
char sex;
int s[3];
};
struct student stu1,stu2,st[25];//变量的定义
//方法B
struct student{
int sn;
int age;
char sex;
int s[3];
}stu1, stu2 st[25];
//方法C-----不推荐
struct{
int sn;
int age;
char sex;
int s[3];
int *p;
}stu1, stu2 st[25];
#include<iostream>
#include<cstdio>
using namespace std;
struct aa{
int num;
char name[10];
};
struct bb{
int a;
float b;
//struct aa c;
};
int main(){
struct bb a;
struct aa c;
cout<<sizeof(c)<<endl;
cout<<sizeof(a)<<endl;
return 0;
}
double a;//sizeof(a) = 8
double *b;//sizeof(b) = 2
double c[5];//sizeof(c) = 40
char *pt[3];//sizeof(pt) = 2*3 = 6
char pt[3];//sizeof(pt) = 3
3、结构变量初始化及引用
(1)在定义结构体变量的同时可以将各个成员的初始值按顺序放在一对花括号中,
来进行对结构体变量的初始化。若初值个数多于成员个数则出错,若初值个数少于
成员个数,则多余成员自动赋0。
(2)结构体变量不能整体引用,只能引用它的成员
引用结构体成员的方式:
结构体变量名.成员名
其中(.)为成员运算符
struct aa{
int a;
char b[10];
float c;
}a1 = {30, "BUPT->BJUT", 40.5},a2{30, "TYUT"},a3
struct student{
int num;
char name[20];
char sex;
float score;
};
struct student aa = {
1001,"Meng",'M',80.5
};
struct student *p = &aa;//指向结构体的整个房子,准确的说指向房子的第一个元素
char *q = aa.name;//name是数组,即首地址,千万不要加&
int *r = &aa.num;
//通过结构体指针的方式访问成员变量
aa.num;
p -> num;
(*p).num