如果我有一个如下所示的程序:
void main1() {} /* Note that these aren't called main. */
void main2() {}
...
int main() {
main1();
main2();
return 0;
}
我有一些值,或者可以是在main1()中生成的矩阵,然后我想在main2()中使用这个矩阵。我们如何传递这些值:因为我必须有main的子函数,我必须在main1()中生成一个未知长度的大矩阵,我必须使用main2()中的这些矩阵值。但我不知道该怎么做?如何存储矩阵并在main2()中使用它?谢谢:
有几个选项:
- 使用全局变量来保持矩阵,并将大小定义为您期望的最大值
- 如果您不喜欢全局变量,只需将矩阵封装在结构中,并将其用作参数和返回类型
- 更好的方法是使用指针并动态分配/释放内存
定义一个保存矩阵的矩阵结构指针,将指向它的指针发送到main1()
分配并填充它,然后将它发送给main2()
:
struct matrix;
void main1(struct matrix** ppmatrix) {} /* Note that these aren't called main. */
void main2(struct matrix* pmatrix) {}
...
int main() {
struct matrix* pmatrix;
main1(&pmatrix); // allocate and fill matrix struct
main2(pmatrix); // use matrix
return 0;
}
这是在C中实现这一点的正确方法。在C++中,您应该通过引用传递这些内容。