【发布时间】:2013-09-07 07:15:50
【问题描述】:
应该是一个简单的问题,我有一个结构
struct Foo{
float *bar;
Foo(){
bar = 0;
}
};
还有一个加载函数:
bool loadFoo(Foo *data){
float nums[4] = {0,1,2,3};
data->bar = nums;
return true;
};
我是这样运行的:
void main(){
char data;
Foo myFoo;
loadFoo(&myFoo);
std::cerr << sizeof(myFoo.bar) << "\n";
std::cerr << myFoo.bar[0] << "\n";
std::cerr << myFoo.bar[1] << "\n";
std::cerr << myFoo.bar[2] << "\n";
std::cerr << myFoo.bar[3];
std::cin >> data;
};
并且 sizeof(myFoo->bar) 的输出是 4 个字节,我认为通过将结构传递给可以修改 data->bar 的方法,并且由于 bar 是,float *bar;我可以将它设为一个数组,因为我无法指定 bar 是一个数组,因为它在加载时是一个“未知大小”。 (当实现时,程序将从文件中读取值)这适用于非指针变量,但它的指针我似乎无法理解。
我该如何做,以便在传递结构时可以修改变量指针?
任何帮助将不胜感激!
【问题讨论】:
-
问题是什么,您要解决什么问题?你的
loadFoo功能很糟糕。
标签: c++ arrays pointers struct