结构数组
struct date dates[100]; struct date dates[]={{4,5,2005},{2,4,2005}};
#include <stdio.h>
struct time{
?? ?int hour;
?? ?int minutes;
?? ?int seconds;
};
struct time timeUpdate(struct time now);
int main(void){
?? ?struct time testTimes[5]={
?? ??? ?{11,59,59},{12,0,0},{1,29,59},
?? ??? ?{23,59,59},{19,12,27}
?? ?};
?? ?int i;
?? ?
?? ?for(i=0;i<5;i++){
?? ??? ?printf("Time is %.2i:%.2i:%.2i",
?? ??? ?testTimes[i].hour,testTimes[i].minutes,testTimes[i].seconds);
?? ??? ?
?? ??? ?testTimes[i]=timeUpdate(testTimes[i]);
?? ??? ?
?? ??? ?printf("...one second later it's %.2i:%.2i:%.2i\n",
?? ??? ?testTimes[i].hour,testTimes[i].minutes,testTimes[i].seconds);
?? ?}
?? ?return 0;?? ?
}
struct time timeUpdate(struct time now){
?? ?++now.seconds;
?? ?if(now.seconds==60){
?? ??? ?now.seconds=0;
?? ??? ?++now.minutes;
?? ??? ?if(now.minutes==60){
?? ??? ??? ?now.minutes=0;
?? ??? ??? ?++now.hour;
?? ??? ??? ?if(now.hour==24){
?? ??? ??? ??? ?now.hour=0;
?? ??? ??? ?}
?? ??? ?}
?? ?}
?? ?return now;
}
?? ?结构中的结构
struct dateAndTime{
?? ?struct date sdate;
?? ?struct time stime;
};
?? ?嵌套的结构
struct point{
?? ?int x;
?? ?int y;
};
struct rectangle{
?? ?struct point pt1;
?? ?struct point pt2;
};
如果有变量
?? ?struct rectangle r; 就可以有: ?? ?r.pt1.x、r.pt2.y, ?? ?r.pt2.x和r.pt2.y? 如果有变量定义: ?? ?struct rectangle r,*rp; ?? ?rp=&r; ?? ? 那么下面的四种形式是等价的: ??
r.ptl.x?
rp->ptl.x
(r.ptl).x?
(rp->ptl).x?
但是没有rp->ptl->x(因为ptl不是指针)??
?
结构中的结构的数组
#include <stdio.h>
struct point{
?? ?int x;
?? ?int y;
};
struct rectangle{
?? ?struct point p1;
?? ?struct point p2;
};
void printRect(struct rectangle r){
?? ?printf("<%d,%d> to <%d,%d>\n",r.p1.x,r.p1.y,r.p2.x,r.p2.y);
}
int main(int argc, char const argv[]){
?? ?int i;
?? ?struct rectangle rects[]={
?? ??? ?{{1,2},{3,4}},
?? ??? ?{{5,6},{7,8}}
?? ?};//2 rectangles
?? ?for(i=0;i<2;i++) printRect(rects[i]);
?? ?return 0;
}
|