関数に3次元配列を渡したいです – プログラミング – Home

関数に3次元配列を渡したいです
 
通知
すべてクリア

[解決済] 関数に3次元配列を渡したいです


Puppy
 Puppy
(@Puppy)
ゲスト
結合: 23年前
投稿: 71
Topic starter  

Puppyです。こんにちは。
先日は2次元配列で苦しみました。(まだよくわかってません)
現在は3次元配列で悩んでいます。(涙)

char aryS[2][3][4];
char aryD[2][3][4];

MoveData(aryS[1][0][0], aryD[1][0][0]);

void MoveData(char *pS[][4], char *pD[][4])
{
// この中でarySからaryDに内容をコピーしたい
}
これだと、変換できないというエラーが出ます。

どのように定義したらいいでしょうか?
昨日ずっと考えたんですけど、どうやってもエラーがとれません。
ギブアップ && 涙 ですぅ。
根本的にしくみから理解したいので、よろしくお願いします。m(..)mぺこり


引用未解決
トピックタグ
YuO
 YuO
(@YuO)
ゲスト
結合: 24年前
投稿: 252
 

>先日は2次元配列で苦しみました。(まだよくわかってません)
>現在は3次元配列で悩んでいます。(涙)

2次元配列がわらかないのなら,3次元配列がわかるわけないと思うんですけどね……。

まずは,配列とポインタの違いをきっちり理解することです。
次に,配列がポインタに変換される規則を理解することです。
それらがPuppyさんに欠けていることですから。

細かい説明抜きに書くと,
ある関数funcにintのn次元配列var[a_1][a_2][a_3]…[a_n]を引数としてもらいたい場合,
funcでは,void func(int var[][a_2][a_3]…[a_n]);と書きます。
#int var[a_1][a_2][a_3]…[a_n]と書いてもよい
ただし,int var[][][a_3]…[a_n]のように,最高次以外を省略することはできません。

で,呼び出し側で,
int var2[a_1][a_2][a_3]…[a_n];
という変数を渡したいとき,func(var2);
と書きます。

ポインタ使った表記(void func(int (*var)[a_2][a_3]…[a_n]))は,
混乱の原因になるのでやめておいた方がよいでしょう。


返信引用
Puppy
 Puppy
(@Puppy)
ゲスト
結合: 23年前
投稿: 71
Topic starter  

おそわった方法でできました。
本当にありがとうございました。

もっと勉強します。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました