Nはキーボードから入力するものとして、N x N x N の三次元配列を確保し解放するプログラムを作成したいのですが、コンパイル時にエラーが出てしまいます。何が間違っているでしょうか?
c
1コード 2#include <stdio.h> 3#include <stdlib.h> 4int main() 5{ 6 int i, j, p; 7 int* x; 8 int N; 9 printf("N = "); 10 scanf("%d", &N); 11 12 x = malloc(N * N * N * sizeof(int)); 13 if ( x == NULL) 14 { 15 puts("Failed."); 16 return 1; 17 } 18 for( i = 0; i < N; i++) 19 for( j = 0; j < N; j++) 20 for( p = 0; p < N; p++) 21 x[i][j][p] = i * N * N + j * N + p; 22 23 for( i = 0; i < N; i++) 24 for( i = 0; j < N; j++ ) 25 for( i = 0; p < N; p++) 26 printf("x[%d][%d][%d] = %d\n", i, j, p, x[i][j][p]); 27 28 free( x ); 29 return 0; 30 }
c
1コンパイル結果 27-1.c: In function ‘main’: 37-1.c:20:17: error: subscripted value is neither array nor pointer nor vector 4 20 | x[i][j][p] = i * N * N + j * N + p; 5 | ^ 67-1.c:25:53: error: subscripted value is neither array nor pointer nor vector 7 25 | printf("x[%d][%d][%d] = %d\n", i, j, p, x[i][j][p]); 8 | ^
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/27 14:44
2021/11/27 14:58
2021/11/27 14:59
2021/11/27 15:03
2021/11/27 23:44