私はC++で2D配列を扱っています。私は配列とポインタの概念を結びつけるのに問題があります。私はそれらがメモリ割り当てと要素へのアクセスという点で関連していることを知っています。例えばC++ - ポインタ表記で2D配列を初期化する
int *arr;
int num = arr + 1*sizeof(int);
は、私は、私はこれをコンパイルすると、2次元配列とポインタ 間の同じ接続がここに私のコード
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 arr[];
int num = arr[1];
と同じですそれはコンパイルする。私はそれを実行しようとすると、私はsegfaultを取得します。誰かが私のコードのエラーを指摘してくれますか?
おかげSO
"INT NUM = ARR + 1 *のはsizeof(INT);" arr [1]と同じではありません。 –
**グリッドに割り当てられたメモリはありません。単なるポインタです。そのためのスペースを割り当てるか、またはそれをいくつかのサイズに設定します。 mallocまたはintグリッドを宣言する[10] [10]; – user5976242
コードに2D配列はありません。ポインターへのポインターがありますが、これはまったく別のものです。 – juanchopanza