【发布时间】:2012-08-06 00:02:38
【问题描述】:
为什么这不起作用?我已经多次查看我的代码,但找不到问题所在。
谢谢!
void generateData(float** inData, int x, int y){
inData[0][0]= 3000.0; // SEGFAULT
}
float** createMatrix(int x, int y){
float** array= malloc(sizeof(float*) * y);
for(int i=0; i<y; i++)
array[i] = malloc(sizeof(float) * x);
}
int main(int argc, char** argv) {
float** arr = createMatrix(100,2);
generateData(arr, 100, 2);
return(0);
}
【问题讨论】:
-
我没有从您的 createMatrix 例程中看到数组返回!换句话说,arr 永远不会获得指向二维数组的实际指针。
-
使用
-wall编译有时会对你有很大帮助:) -
请注意,您可以简单地使用
float * array = malloc(sizeof(float)*w*h),然后通过array[x+y*w]访问成员。 -
看不出我怎么没有注意到这一点。谢谢:)
标签: c arrays pointers 2d dynamic-allocation