声明结构类型
在函数内/外?
#include<stdio.h>
struct date{
int month;
int day;
int year;
};
int main(int argc,char const *argv[])
{
struct date today;
today·month=07;
today·day=31;
today·year=2014;
printf("Today's date is %i-%i-%i.\n",today·year,today·month,today·day);
return 0;
}
·和本地变量一样,在函数内部声明的结构类型只能在函数内部使用
·所以通常在函数外部声明结构类型,这样就可以被多个函数所使用了
声明结构的形式
struct point{ struct{
int x; int x;
int y; int y;
}; } p1,p2;
struct point p1,p2; p1和p2都是一种无名结构,里面有x和y
p1和p2都是point里面有x和y的值
struct point{
int x;
int y;
} p1,p2;
p1和p2都是point里面有x和y的值t
结构成员
·结构和数组有点像
·数组用【】运算符和下标访问其成员
·a【0】=10;
·结构用运算符和名字访问其成员
·today·day
·student·firstName
·pl.x
·pl.y
结构运算
·要访问整个结构,直接用结构变量的名字
·对于整个结构,可以做赋值、取地址,也可以传递给函数参数
·pl=(struct point){5,10}; //相当于pl.x=5;
·pl.y=10;
·pl=p2; //相当于pl.x=p2.x;pl.y=p2.y;
结构作为函数参数
·整个结构可以作为参数的值传入函数
·这时候是在函数内新建一个结构变量,并复制调用者的结构的值
·也可以返回一个结构
·这与数组完全不同
指向结构的指针
struct date{
int month;
int day;
int year;
} myday;
struct date *p=&myday;
(*p).month=12;
p → month=12;
·用→表示指针所指的结构变量中的成员