【发布时间】:2021-03-17 10:28:04
【问题描述】:
我正在尝试使用指针动态分配和操作二维数组。我是指针新手,所以当我运行这个程序时,它会给出“分段错误”。这里有什么问题?
我也用 (grid + i*c + j) 加了一个星号,还是不行
#include <stdio.h>
#include <stdlib.h>
float* DynamicAll(int row,int col){
float *arr = (float *)malloc(row*col*sizeof(float));
return arr;
}
void fillIn(float **grid, int r, int c){
for(int i = 0 ; i < r ; i++){
for(int j = 0 ; j < c; i++){
**(grid + i*c + j) = i+j;
}
}
}
void print(float **grid, int r, int c){
for(int i = 0 ; i < r ; i++){
for(int j = 0 ; j < c; i++){
printf("%f ", **(grid + i*c + j));
}
}
}
int main() {
int row = 3, col = 3;
float *arr;
arr = DynamicAll(row,col);
fillIn(&arr,row,col);
print(&arr,row,col);
free(arr);
return 0;
}
【问题讨论】:
-
'for(int j = 0 ; j
-
错误调试失败 - 如果您打印出索引,您会发现 'j' 不会改变:((
-
你可以通过学习如何在开发更多应用程序之前进行基本调试来感谢我,(使用 gdb,也许:)
-
好的,我开始
-
如果您使用的是 Windows,您可以下载 Codeblocks。预装了 gcc 和 gdb,调试器相当容易使用。总体上对新手非常友好,至少就专业工具链而言。
标签: c pointers dynamic-memory-allocation