Я пытаюсь передать указатель указателя, чтобы изменить его содержимое в другой функции. Для того, чтобы сделать это, я прочитал, что мне нужно использовать указатель указатель указатель, так вот мой «код» до сих пор:Несовместимый тип указателя при передаче указателя указателя
void modify(s8 ***strings){
// Modifies the strings
}
void main(){
s8 strings[9][95];
for(i = 0 ; i < 9 ; i++){
for(j = 0 ; i < 95 ; i++){
strings[i][j] = 0;
}
}
modify(&strings);
}
s8 представляет собой особый тип, который используется MicroBlaze I» м, это проблема? Я также прочитал, что мне нужно использовать const, но я не понимаю, где и почему?
Как насчет размера? Нужно ли использовать внутреннюю модификацию malloc, чтобы зарезервировать место в памяти? Или же можно просто установить функцию изменения как:
void modify(s8 *strings[9][95])
Сейчас мой вопрос заключается в следующем: я получаю предупреждение в последней строке (изменить (& строк)) о типе указателя, который неверен.
passing argument 1 of 'modify' from incompatible pointer type
Спасибо за ваши ответы!
Спасибо за ваш ответ, передавая массив как нормальный аргумент является то, что я сделал первый, но тогда мой вопрос заключается в том, что последний элемент (строки [7]) не то, что я поставил в функции изменить как только я вернусь к основной функции. Вот почему я думал, что пытаюсь сделать это неправильно. Вы знаете, почему? Тем временем я попробую ваш синтаксис, чтобы узнать, есть ли у меня эта проблема! –
@ArthurPenguin Похоже, что у вас есть ошибка внутри функции, которая, возможно, не связана с передачей параметров. – Lundin
В качестве альтернативы используйте VLA: 'void modify (size_t x, size_t y, s8 строки [x] [y])'. – Lundin