我想初始化一些数组,这些数组是通过引用传递给函数的结构的成员。 感谢任何帮助。
typedef struct Snake_pos
{
char field[10][10];
int Y[10];
int X[10];
}snake_pos;
int main()
{
snake_pos pos1;
pos_init(&pos1);
return 0;
}
void pos_init(snake_pos *pos1)
{
pos1->X={};
pos1->Y={};
pos1->field={};
}
答案 0 :(得分:1)
您可以通过a访问数组内的任何数组元素 结构指针这样:
- 代表 1 D 数组:
structure_pointer->array_valiable[index1]
- 代表 2 D 数组:
structure_pointer->array_valiable[index1][index2]
现在,您可以使用X
以这种方式初始化结构Y
的数组field
,snake_pos
和scanf()
的每个成员:
#include <stdio.h>
typedef struct Snake_pos
{
char field[10][10];
int Y[10];
int X[10];
}snake_pos;
void pos_init(snake_pos *pos1)
{
int i,j;
//initializing each member
//of array X
for(i=0;i<10;i++)
scanf("%d",&pos1->X[i]);
//of array Y
for(i=0;i<10;i++)
scanf("%d",&pos1->Y[i]);
//of the two dimensional array field
for(i=0;i<10;i++)
for(j=0;j<10;j++)
scanf(" %c",&pos1->field[i][j]);
//notice the space before %c is to consume white spaces returning from before scanf's
}
int main()
{
snake_pos pos1;
pos_init(&pos1);
return 0;
}
注意:如果要将所有成员初始化为单个固定值, 然后你可以代替在for循环中使用scanf(),分配值 这样:
for(i=0;i<10;i++) //initializes all members with a value of 0 pos1->X[i]=0;
答案 1 :(得分:1)
在定义变量时,您只能使用语法= {}
。因此,要将每个成员归零,您可以将其定义为
snake_pos pos1 = { 0 };
或者如果传递给函数,就像这样
void pos_init(snake_pos *pos1)
{
memset(pos1, 0, sizeof *pos1);
}
答案 2 :(得分:0)
如果你想用零来初始化,为什么不设置结构?
void pos_init(snake_pos *pos1)
{
memset(pos1, 0, sizeof(snake_pos));
}