C语言结构体
C语言结构体可以作为指针进行参数传递,而且还可以在函数作为返回值。
#include <stdio.h>
struct point{
int x;
int y;
};
//struct rectangle{
// struct point p1;
// struct point p2;
//};
struct point* getStruct(struct point*);
void output(struct point);
void print(const struct point *p);
int main() {
/*************结构体指针*************************/
struct point y = {0,0};
getStruct(&y);
output(y);
output(*getStruct(&y));
print(getStruct(&y));
/****************嵌套******************/
// int i;
// struct rectangle rect[] = {
// {{1,2},{3,4}},
// {{5,6},{7,8}}
// };
//
// for(i=0;i<2;i++){
// printRect(rect[i]);
// }
/****************************************/
return 0;
}
struct point* getStruct(struct point *p){
scanf("%d",&p->x);
scanf("%d",&p->y);
printf("p->=%d,p->=%d\n",p->x,p->y);
return p;
}
void output(struct point p){
printf("p.x=%d,p.y=%d\n",p.x,p.y);
}
void print(const struct point *p){
printf("px=%d,py=%d\n",p->x,p->y);
}
//void printRect(struct rectangle r){
// printf("<%d, %d> to <%d, %d>\n",r.p1.x,r.p1.y,r.p2.x,r.p2.y);
//}
其中未加注释部分显示了结构体如何作为指针进行参数传递,以及函数如何返回一个结构体指针。
注释的部分未结构体嵌套的应用。