我的testing
中有一项要求,因为我在调用函数时正在使用0
初始化结构。但是,当函数ex()
被调用时,ab
结构abc
的对象会出现垃圾。
但我需要使用0
初始化结构abc。
因为我无法访问功能ex()
。所以,无论我需要设置什么,我都需要从main()
设置。
struct abc{
int a[4];
};
void ex()
{
abc ab;
printf("%d\n", ab.a);//Garbage value
}
int main()
{
abc ab;
memset(&ab, 0, sizeof(abc));
printf("%d\n", ab.a);
return 0;
}
请帮忙。
答案 0 :(得分:3)
您可以为abc
提供一个默认构造函数,将数组元素初始化为0
。这摆脱了垃圾值:
struct abc {
int a[4];
abc() : a() {}
};
接下来,如果您希望myex
打印abc
中创建的main
的数据,则应为其提供abc
参考参数。这是myex
的C ++ 11版本:
#include <iostream>
void myex(const abc& item)
{
for (const auto& n : item.a)
{
std::cout << n << " ";
}
std::cout << "\n";
}
int main()
{
abc myabc;
myex(myabc);
}
答案 1 :(得分:2)
ab
中的{p> ex
与ab
中的main
不同;初始化一个不会影响另一个。
如果您打算让ab
引用main
和ex
中的同一个对象,则需要执行以下操作之一:
ab
作为参数从ex
; main
ab
(ex
或main
之外); 答案 2 :(得分:1)
将结构定义更改为以下内容。这将照顾
struct abc{
int a[4];
abc()
{ memset(a, 0, 4*sizeof(int)); }
};