我正在使用C ++开发2D数组。我在连接数组和指针的概念时遇到麻烦。我知道它们在内存分配和访问元素方面是相关的。例如
int *arr;
int num = arr + 1*sizeof(int);
是相同的
int arr[];
int num = arr[1];
我正在尝试在2D数组和指针之间找到相同的连接这是我的代码
void printGrid(int **arr) {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
cout << setw(3);
cout << arr[i][j] << " ";
}
cout << endl;
}
}
int main() {
int **grid;
srand(time(NULL));
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
grid[i][j] = rand() % 11;
}
}
printGrid(grid);
}
当我编译时,它会编译。然后,当我尝试运行它时,我遇到了段错误。有人可以指出我代码中的错误吗?
太感谢了
int **grid;
srand(time(NULL));
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
grid[i][j] = rand() % 11;
}
}
应该为动态数组分配内存的部分在哪里?可能还因为它的元素?为了解决这个问题,您可以做
// Allocating memory for array and elements
int **grid = new int*[10];
for (int i = 0; i < 10; i++) {
grid[i] = new int[10];
}
// Now fill the array as you had in your code
//
...
// Deletion part
for (int i = 0; i < 10; i++) {
delete[] grid[i];
}
delete[] grid;
还,
我正在使用C ++开发2D数组。我在连接数组和指针的概念时遇到麻烦。我知道它们在内存分配和访问元素方面是相关的。例如
int * arr; int num = arr + 1 * sizeof(int);
是相同的
int arr []; int num = arr [1];
不,他们不一样。但这是相同的:
int x[] = {0, 2, 3};
int *arr = x;
int num = *(arr + 1); //Look up pointer arithmetic; same as num=arr[1];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句