结构
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