结构

70 阅读1分钟

结构

PS:结构一般在main外面声明,使得在所有函数中都能使用

  • 声明+定义(三种形式):
struct date{
    int day;
    int month;
    int year;
};//声明了date这样一个结构类型
struct date today;//定义了date这个结构类型的一个结构变量
struct{
    int day;
    int month;
    int year;
}today;//以后不能直接定义具有相同内容的结构变量
struct date{
    int day;
    int month;
    int year;
}today;//以后能直接定义具有相同内容的结构变量,eg:struct date tomorrow;
  • 初始化:
struct date{
    int day;
    int month;
    int year;
};
int main()
{
    struct date today={31,07,2014};
    struct date thismonth={.month=7,.year=2014};//.day没有赋值,默认赋予0
}
  • 结构成员:
    • 结构和数组有点像(但是结构体之间可以互相赋值,即结构名字不是指针)
    • 数组用[ ]运算符和下标访问其成员
    • 结构用.运算符和名字访问其成员
  • 结构运算:
    • 访问整个结构直接用结构变量的名字
    • 对于整个结构,可以做赋值、取地址、也可以传递给函数参数
    • 取地址运算符&优先级低于结构成员访问运算符.
  • 结构与函数:
    • 整个结构可以作为参数的值传入函数(在函数内新建一个结构变量,并复制调用者的结构的值,工程量太大不建议)
    • 但最好使用结构指针将结构传入函数
    • 也可以返回一个结构
    • 这和数组完全不同
struct date{
    int day;
    int month;
    int year;
}myday;
struct date *p=&myday;
(*p).month=12;
p->month=12;//与上面那一行都表示将myday里面的month赋值为12
  • 结构与数组
    • 结构数组
    • 结构中有数组
  • 结构中的结构