const int SLICE=2;
const int SIZE=256;
signed short int *matrix=new signed short int[SLICE][SIZE][SIZE];
for(int i=0; i<SLICE; i++){
for(int j=0; j<SIZE; j++){
for(int k=0; k<SIZE; k++){
fin.read((char*) &matrix[SLICE][SIZE][SIZE],sizeof(signed short int));
}
}
}
delete[] data;
三次元データを読み込むために、三次元配列を使って読み込もうとしたのですが、上手く読み込めません。
三行目の所で、error C2440: '初期化中' : 'short (*)[256][256]' から 'short *' に変換できません。
七行目の所で、error C2109: 配列または、ポインタでない変数に添字が使われました。
というエラーがでます。動的メモリの確保の仕方がまずいのでしょうか?
どなたか教えて頂けますでしょうか?よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
> signed short int *matrix=new signed short int[SLICE][SIZE][SIZE];
エラーメッセージの通り、左辺の型がおかしい。(3次元配列なのに short * 型を使ってる。)
ちゃんと short (*)[256][256] 型の変数に代入しましょう。
signed short int (*matrix)[SIZE][SIZE] = new signed short int[SLICE][SIZE][SIZE];
あと、ループ内でmatrix[SLICE][SIZE][SIZE]を使ってるけど、これはメモリ確保されていないので使用できない領域です。
ここはi,j,kを使う所じゃないの?
それと最後のdelete[] data; の dataってどこにもないよ?
無事解決できました!
ありがとうございました。
まだ、エラーの意味を理解することも出来てない状態なので、
さらに勉強したいと思います。
あと、delete[] dataではなく、matrixの間違いでした。
No.1
- 回答日時:
newでの動的メモリ確保は多次元はサポートしていないと思われます(すいません、詳しくは調べてません)。
なので、1次元ずつメモリ確保をする必要があると思います。
二次元なら
int** a = new int*[2];
for (int i = 0; i < 2; ++i) a[i] = new int[5];
の様な感じですかね。三次元でも要領は同じです。
まぁC++なのでstd::vector使っておくのが無難だと思いますけどね。
あとは1次元で管理する方法もありますね。
const int SLICE=2;
const int SIZE=256;
int a[SLICE * SIZE];
// [1][5]なら
int val = a[SLICE * 1 + 5];
これをクラス化すれば使いやすくなるかもです。
以上参考になったら幸いです。
多分大丈夫だと思いますがどこか間違ってたらすいません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数から配列を返すには?
-
構造体のextern方法
-
C言語において、 配列要素をひ...
-
C言語の2次元配列 容量が大き...
-
プログラム 数列の和
-
配列の要素数に変数を入れたい...
-
5人分の氏名と英語、国語、数...
-
MFCのCArrayを使った二次元配列
-
Winsockを用いてデータを交互に...
-
C#で配列が空かを判定するには?
-
fclose()でセグメンテーション違反
-
C#で構造体の配列を持った構造...
-
C言語から質問です。
-
MFC - ダイアログボックスのPic...
-
コンボボックスでデフォルト値...
-
無作為に選択
-
「互換でない型変換」というエ...
-
define で 配列
-
c言語 構造体
-
C#でのフィボナッチ数列
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数から配列を返すには?
-
C言語において、 配列要素をひ...
-
配列の要素数に変数を入れたい...
-
構造体のextern方法
-
define で 配列
-
c言語
-
C#で構造体の配列を持った構造...
-
C言語の2次元配列 容量が大き...
-
c言語 構造体
-
C言語 ファイルの指定された行...
-
C言語についてです 5人のテスト...
-
int i, int i[1];
-
fclose()でセグメンテーション違反
-
char型配列をint型に代入するには
-
C言語から質問です。
-
Cのエラー
-
コンボボックスでデフォルト値...
-
C言語の課題が出たのですが自力...
-
MFCのCArrayを使った二次元配列
-
[C++]const int と配列
おすすめ情報