【发布时间】:2017-06-20 16:57:22
【问题描述】:
我正在尝试编写一个 C 程序,其中根据结构成员的大小,应该将许多成员读入数组。
正如你在下面的代码中看到的那样,基于bookPtr->size的值,我会将那么多成员添加到数组中。
如果 bookPtr->size 为 3 ,我将读取所有成员 x,y 和 z。
如果 bookPtr->size 为 2 ,我将读取成员 x 和 y。
如果 bookPtr->size 为 1 ,我将读取成员 x。
如果 bookPtr->size 为 0 ,则不读取任何成员。
但是我想进一步优化代码。有没有办法减少代码长度。谢谢。
#include<stdio.h>
typedef struct
{
int x;
int y;
int z;
int size;
}Book;
void Get (Book* bookPtr)
{
Book mybook;
int size = bookPtr->size;
if(size == 3)
{
mybook->x = bookPtr->x;
mybook->y = bookPtr->y;
mybook->z = bookPtr->z;
}
else if(size == 2)
{
mybook->x = bookPtr->x;
mybook->y = bookPtr->y;
}
else if(size == 1)
{
mybook->x = bookPtr->x;
}
else
{
}
}
int main()
{
Book bookPtr;
bookPtr.x = 2 ;
bookPtr.y = 2 ;
bookPtr.z = 20 ;
bookPtr.size = 2 ;
Get(&bookPtr);
return 0;
}
【问题讨论】:
-
除非你use a single array of
int而不是三个单独的变量。