11.1.1
- 枚举创建方式:
- enum color {red=1,yellow,green=5};
- enum color =5;
- enum 枚举名{内容元素};
- 枚举和const的对比:如果需要定义很多常量,要比const看起来美观,且方便。
11.2.1
声明结构类型:(通常在函数外声明,全局性)
注意:最后有分号!!!
struct date{
int month;
int day;
int year;
};
struct date today;
以下是第二种定义格式:
struct point{
int x;
int y;
}p1,p2;
p1和p2都是point的变量
访问成员:p1.x p2.y 打印用%i。
赋值操作:p1=(struct point){5,10};//相当于p1.x=5; p2.y=10;
p1=p2; //相当于p1.x=p2.x; p1.y=p2.y;
11.2.2
- 与其将一整个庞大的结构体当做参数传入函数,然后再最后以赋值的形式在main中运行,不如将结构体的指针当做参数传入函数,
- 这样做的好处是:节省了结构体参数重建的空间。
- 指向结构的指针:用->表示指针所指的结构变量中的成员。(以下为两种表示方法)
-
struct date{ int month; int day; int year; }myday; struct date*p=&myday; (*p).month=12; p->month=12;
如何将函数写入结构指针参数:
-
strcut point* getStruct(struct point *p){ scanf("%d",&p->x); scanf("%d",&p->y); printf("%d, %d",p->x,p->y); return p; }
使用函数可以这么使用:
strcut point{
int a;
int b;
}x;
strcut point x={0,0}; //结构体初始化
getStrcut(&x); //得到结构体的指针
getStrcut(&x)->a=5; //使得名为x的结构体中的a元素,赋值为5
*getStrcut(&x)=(strcut point){5,4}; //使得结构体重新赋值
11.2.3
结构数组:
strcut date dates[100]; //定义的date结构里有dates数组,其长度为100
struct date dates[]={{4,5,2005},{2,4,2005}}; //dates数组里有两个结构
结构中的结构:
strcut dateAndTime{
strcut date{
int a=1;
int b=2;
}d;
strcut time{
int a1=3;
int b1=4;
}t;
}dt;
struct dateAndTime *pdt, dt;
pdt=&x;
//以下四种形式是等价的
dt.d.a;
pdt->d.a;
(dt.d).a;
(pdt->d).a;
//但是没有pdt->d->a; 因为d不是指针