#c
#c
Вопрос:
Я пытаюсь инициализировать значение массива внутри функции, но я действительно борюсь с этим. Следующий код выдает EXC_BAD_ACCESS (code=1, address=0x0)
ошибку.
В конце мне нужен массив, подобный [piecesNumber][10][10]
тому, где число частей равно 12.
MAX_SIZE
это просто define = 10 .
int main() {
int (*pieces) [MAX_SIZE][MAX_SIZE] = NULL;
createPieces(amp;pieces);
for (int i = 0; i < 12; i) {
for (int x = 0; x < MAX_SIZE; x) {
for (int y = 0; y < MAX_SIZE; y) {
printf("%d",pieces[i][x][y]);
}
printf("n");
}
}
return 0;
}
void createPieces(int (**pieces)[MAX_SIZE][MAX_SIZE]){
*pieces = malloc(sizeof(int[MAX_SIZE][MAX_SIZE])*piecesNumber()); //piecesNumber = 12
for (int i = 0; i < 12; i ) {
for (int x = 0; x < MAX_SIZE; x ) {
for (int y = 0; y < MAX_SIZE; y ) {
*pieces[i][x][y] = 1;
}
}
}
}
Большое вам спасибо за вашу помощь, я пытаюсь решить это со вчерашнего утра: (
Комментарии:
1. Да, количество элементов () возвращает 12.
2. Ошибка, которую я получаю, возникает, когда я делаю: * pieces [i] [x] [y] = 1;
3. Каждый раз, когда вы получаете
EXC_BAD_ACCESS
сообщение об ошибке — наиболее вероятной причиной является то, что вы злоупотребляете указателем и пытаетесь получить доступ к адресу памяти за пределами допустимого диапазона ваших программ (например, в области памяти, зарезервированной системой, И т. Д.)
Ответ №1:
Проблема вызвана непреднамеренной группировкой. Следующее:
*pieces[i][x][y] = 1;
должно быть:
(*pieces)[i][x][y] = 1;
Без круглых скобок *
оператор применяется только после индексации, что явно не сработает.