我正在C++中處理二維數組。我無法連接數組和指針的概念。我知道它們在內存分配和訪問元素方面是相關的。例如C++ - 用指針表示法初始化二維數組
int *arr;
int num = arr + 1*sizeof(int);
相同
int arr[];
int num = arr[1];
我試圖找到二維數組和指針 之間相同的連接下面是我的代碼
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);
}
當我編譯此,它編譯。當我嘗試運行它時,會出現段錯誤。有人可以指出我的代碼中的錯誤嗎?
由於SO
「int num = arr + 1 * sizeof(int);」與arr [1]不同。 –
沒有分配給**網格的內存。它只是一個指針。爲其分配空間或將其設置爲某種大小,例如malloc或聲明int網格[10] [10]; – user5976242
代碼中沒有2D數組。你有一個指針指針,這是一個完全不同的東西。 – juanchopanza