質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Q&A

解決済

2回答

569閲覧

動的な配列を作る関数

HYYH

総合スコア16

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

0グッド

0クリップ

投稿2023/01/23 07:44

編集2023/01/23 08:16

目的
3次元配列を動的に作る関数を作成しようとしています。
mallocじゃなくてcallocを使うことで初期化を自動的にしてくれる事は理解できました。
しかし、「関数 ‘calloc’ へ渡す引数が少なすぎます」、「戻りでポインタからキャスト無しに整数を作成しています」、「代入で整数からキャスト無しにポインタを作成しています」が出て来て治すことができません。
この場合何がいけないのでしょうか。
※「関数 ‘calloc’ へ渡す引数が少なすぎます」は解決しました。ありがとうございます。

C

1#include<stdio.h> 2#include<stdlib.h> 3#include<math.h> 4#define pixel 128 5 6/*動的な3次元配列を作る関数*/ 7char memory3(int nx,int ny,int nz){ 8 int j,k; 9 char ***image; 10 //image[nz][ny][nx]のうち'nz'を確保する 11 image=(char ***)calloc(nz,sizeof(char **)*nz); 12 if(image==NULL){ 13 printf("memory allocation error\n"); 14 exit(1); 15 } 16 for(k=0;k<nz;k++){ 17 //image[nz][ny][nx]のうち'ny'を確保する 18 image[k]=(char **)calloc(ny,sizeof(char *)*ny); 19 if(image[k]==NULL){ 20 printf("memory allocation error\n"); 21 exit(1); 22 } 23 for(j=0;j<ny;j++){ 24 //image[nz][ny][nx]のうち'nx'を確保する 25 image[k][j]=(char *)calloc(nx,sizeof(char)*nx); 26 if(image[k][j]==NULL){ 27 printf("memory allocation error\n"); 28 exit(1); 29 } 30 } 31 } 32 return image; 33} 34 35int main(void){ 36 FILE *fp1,*fp2; 37 int nz=pixel,ny=pixel,nx=pixel,i,j,k; 38 char ***image; 39 image=memory3(nx,ny,nz); 40 char ***nimage; 41 nimage=memory3(nx,ny,nz); 42 char proj[nx][ny]; 43}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2023/01/23 08:08

もとの問題を消してしまったら、修正前の回答が意味がわからなくなってしまいます。(なりました。) もともとの問題を残した上で新たに発生した問題を追記する形にしてください。
HYYH

2023/01/23 08:17

ありがとうございます。再度訂正してみました。
guest

回答2

0

ベストアンサー

この場合何がいけないのでしょうか。

エラーメッセージのとおりです。calloccalloc(size_t number, size_t size)というように、2つの引数を取ります。

本来はサイズと個数を指定するものですが、分けて指定せずに片方を1に固定するような使い方でも動くといえば動きます。

投稿2023/01/23 07:54

maisumakun

総合スコア145295

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HYYH

2023/01/23 07:59

ありがとうございます。上記のように訂正してみました!
guest

0

calloc関数の仕様を調べよう
使い方が間違ってますよ

投稿2023/01/23 07:52

y_waiwai

総合スコア87821

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問