结构体

在c语言中,

定义一个结构体

struct rect{

int llx;

int lly;

int color;

int width;

int height;

};

对结构体进行赋值的方法既可以用

struct rect r;

r.llx = r.lly=0;

r.color = 0xFF00FF;

r.width = 10;

r.height= 20;

也可以在声明变量的时候,进行初始化

struct rect 人= { 0, 0, 0xFF00FF, 10, 20};

一个常见的现象是,将指向结构体的指针从一个地方传递到另一个地方,而不是复制它们。例如,下边的函数计算长方形的面积,这里,传递给函数的就是一个指向长方形struct的指针:

int area(struct rect *rp)

{return (*rp).width*(*rp).height;

}

表达式(*rp).width间接引用了这个指针,并且选取所得结构width字段。这里必须要用括号,因为编译器会将表达式*rp.width解释为*(rp.width),而这时非法的。这种间接引用和字段选取的结合使用非常常见,以至于c语言提供了一种表示->作为替代。即rp->width等价于表达式(*rp.whidth)。例如,我们可以写一个函数,将一个长方形向顺时针旋转90度:

void rotate_left(struct  rect *rp)

{

int t = rp->height;

rp->height= rp->width;

rp->width = t;

rp->llx -= t ;

}

就像数组可以嵌套在结构体中、数组可以嵌套在另一个数组中一样,结构体也可以嵌套在另一个结构体中。例如:

struct prob{

int* p;

struct{

int x;

int y;

}s;

struct prob *next;

};


版权声明:本文为u011188097原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。