有两个结构体,通过结构体指针引用这两个结构体的成员,实现对结构体成员变量的处理。
代码实现
#define A 2
#define B 8
typedef struct {
short x[A][B];
int y;
} str1; //定义结构体str1
typedef struct {
char array[B];
int t;
short s[B];
int u;
} str2; //定义结构体str2
void setval(str1 *p, str2 *q) //设置结构体成员变量
{
int i,j,v1=q->t;
int v2=q->u;
p->y=v1+v2;
for(i=0;i<B;i++)
{
q->array[i]=i+1;
q->s[i]=i+2;
}
for(j=0;j<A;j++)
for(i=0;i<B;i++)
{
if(j==0)
p->x[j][i]=q->array[i];
else
p->x[j][i]=q->s[i];
}
}
void main()
{
str1 s1;
str2 s2;
s2.t=12;
s2.u=9;
setval(&s1, &s2); //调用函数setval()来设置结构体成员
}
程序功能
把结构体s2的成员t和u的和值21送给结构体s1的成员y,把结构体s2的成员数组array送给结构体s1的成员数组x的第一行,把结构体s2的成员数组s送给结构体s1的成员数组x的第二行。