我无法将结构数组作为函数的参数传递
struct Estructure{
int a;
int b;
};
和一个功能
Begining(Estructure &s1[])
{
//modifi the estructure s1
};
主要是这样的
int main()
{
Estructure m[200];
Begining(m);
};
这是有效的吗?
答案 0 :(得分:1)
不,你需要输入你的结构,你应该将数组传递给它;通过引用传递在C中不起作用。
typedef struct Estructure{
int a;
int b;
} Estructure_s;
Begining(Estructure_s s1[])
{
//modify the estructure s1
}
int main()
{
Estructure_s m[200];
Begining(m);
}
可替换地:
struct Estructure{
int a;
int b;
};
Begining(struct Estructure *s1)
{
//modify the estructure s1
}
int main()
{
struct Estructure m[200];
Begining(m);
}
答案 1 :(得分:0)
typedef struct {int a; int b;}结构;
void开始(Destructure * vector) {vector [0] .a = 1; }
答案 2 :(得分:0)
Begining(struct Estructure s1[])
{
//modifi the estructure s1
};
int main()
{
struct Estructure m[200];
Begining(m);
return 0;
};
答案 3 :(得分:0)
typedef struct{
int a;
int b;
} Estructure;
void Begining(Estructure s1[], int length)
//Begining(Estructure *s1) //both are same
{
//modify the estructure s1
};
int main()
{
Estructure m[200];
Begining(m, 200);
return 0;
};
注意:最好将length
添加到您的函数Beginning
。
答案 4 :(得分:0)
将工作结构粘贴在Estructure之前,或者将其定义为其他类型并使用它。 C中也不存在通过引用传递,如果您愿意,则传递指针。也许:
void Begining(struct Estructure **s1)
{
s1[1]->a = 0;
}
与数组不完全相同,但这应该适用于C land并且它会传递指针以提高效率。