【发布时间】:2014-07-03 05:20:32
【问题描述】:
我声明了一个全局浮点二维指针。在单独的函数中分配内存并在另一个函数中初始化。但是当值时,它因函数而异。
float **x; // Global
int i,j; // Global
void init(){
x = new float *[2];
for(i=0;i<2;i++)
x [i] = new float [60];
}
void calc(){
for(i=0;i<2;i++)
for(j=0;j<60;j++)
x[i][j]= // Some calculation
for(i=0;i<2;i++){
for(j=0;j<60;j++)
cout<<x[i][j]<<" "; // Here it prints a value1
cout<<"\n";
}
}
void main(){
init();
calc();
for(i=0;i<2;i++){
for(j=0;j<60;j++)
cout<<x[i][j]<<" "; // Here it entirely different value (1st 2 different values and rest as 0)
}
我必须在用户定义大小的所有函数中使用二维浮点指针。除了全局声明还有什么更好的方法吗??
【问题讨论】:
-
有什么令人信服的理由不能使用
std::vector?此外,您在每段代码中都在越界访问外部数组。该外部数组包含 2 个元素,但每个循环总共迭代 3 个元素。 -
你在
init()的范围外访问外部数组。 -
抱歉输入错误,现已更正。
标签: c++ pointers global-variables declaration