私は次元がx * y * z
であるいくつかの実際に大きなイメージキューブを扱っています。C配列での参照渡しの3D配列
現在、私はこれが私のためにうまく働いたが、今私は、コードの一部を書き換えることだし、参照することによって配列を渡すことができるようにしたいと思い、このような
int ***input = malloc(sizeof(int **)*(lines));
int d;
int i;
for(i = 0 ; i<lines ; i++) {
input[i] = malloc(sizeof(int *)*bands);
for(d = 0 ; d<bands ; d++) {
*input[i][d] = malloc(sizeof(int)*(samples));
}
}
としてそれらを扱ってきました
私は私が渡す必要行うために考えのような機能がどのように見えるfoo(&input)
:
foo(int ****input) {
*input = malloc(sizeof(int **)*(lines));
int d;
int i;
for(i = 0 ; i<lines ; i++) {
*input[i] = malloc(sizeof(int *)*bands);
for(d = 0 ; d<bands ; d++) {
*input[i][d] = malloc(sizeof(int)*(samples));
}
}
}
しかし、最初のfor(i...
) `ループに入った後にsegフォルトを受け取ったようです。 ご意見は非常に役に立ちます。ありがとうございます。
'int **** input' ... o_O – Mankarse
C言語では「参照渡し」はありません。常に値渡しです。この場合、値はポインタです。セマンティクスは、多分、あなたがやっていることをよりよく理解するのに役立つでしょう...また、あなたは 'typedef'を考えましたか?ああ、誰かのために 'malloc'の失敗を確認してください。 – littleadv
@Mankarse笑、私はそれがばかげているのは分かっていますが、それは正しい構文ではありませんか? – Ponml