DAY1 C++结构体类型初识

C和C++允许用户自己制定一种数据类型,称为结构体

举例如下:

android 定义结构体 enum_运算符

一般形式:
struct 结构体类型名
{成员表列:类型名 成员名}

struct Student
{ int num;
  char name[];
  char sex;
  int age;
  float score;
  char addr[];
};
  • **注意:**花括号后的;不要弄掉了。
  • 每个成员也称为结构体中的一个“域”
  • 成员表列又称为“域表”

第1种:先声明结构体类型再定义变量名

Student Student1 Student2;
  • 其中:Student是结构体类型名,Student1 Student2是结构体变量名
  • 在C语言中,在定义结构体变量时,要在结构体类型名前面加上struct

第2种:在声明类型的同时定义变量

struct Student
{
  int num;
  char name[];
  char sex;
  int age;
  float score;
  char addr[];
}student1,student2;

第3种:直接定义结构体类型变量(这种方法很少用)

struct 
   {
     成员表列
   }变量名表列;

关于结构体类型:

  • 只能对结构体变量中的成员赋值,不能对结构体类型赋值
  • 在编译时,不会为类型分配空间,只为变量分配空间
  • 结构体中的成员可以单独使用,相当于普通变量
  • 成员也可以是一个结构体变量:
  • android 定义结构体 enum_赋值_02


  • android 定义结构体 enum_变量名_03

  • 结构体中的成员名可以和程序中的变量名相同,但二者没有关系。如程序中定义的整形变量num和student中的num是两回事,互不影响。

  • 可以将一个结构体变量的值赋给另一个具有相同结构的结构体变量:student1=student2
  • 可以引用一个结构体变量中的一个成员的值:student1.num表示结构体变量student1中的成员的值。引用结构体变量中成员的一般方式为:结构体变量名.成员名。例如:student1.num=100.
  • 是成员运算符,他在所有的运算符中优先级最高,所以可以把student.num作为一个整体来看待,上面赋值语句的作用是将整数100赋给student变量中的整型成员num
  • 如果成员本身也是一个结构体类型,则要一级一级地找到最低一级的成员:student.birthday.month
  • 不能将一个结构体变量作为一个整体进行输入和输出,只能对结构体变量中的各个成员分别进行输入和输出:不可以cout<<student1;
  • 结构体变量的成员可以像普通成员一样进行运算
  • 可以引用结构体变量(成员)的地址:
cout<<&student1;//输出student的首地址
 cout<<&student1.age;//输出student1.age的首地址

结构体变量的地址主要用作函数参数,也可以引用结构变量的地址