Я работаю с некоторыми действительно большими кубами изображения, которые являются x * y * z
в измерении.3d массив, проходящий по ссылке в C
В настоящее время я занимаюсь с ними как таковой
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));
}
}
}
Однако я, кажется, получаю seg-ошибки после того, как он вступает в первый цикл for(i...
). Любые предложения были бы очень полезными, спасибо.
'int **** input' ... o_O – Mankarse
В C нет« передачи по ссылке », вы всегда проходите по значению. В этом случае ваше значение является указателем. Семантика, может быть, но может помочь вам лучше понять, что вы делаете ... Кроме того, вы считали «typedef's? Ах, и, пожалуйста, проверьте неудачи 'malloc', пожалуйста! – littleadv
@ Mankarse lol, я знаю, это кажется смешным, но разве это не правильный синтаксис? – Ponml