Проект, над которым я сейчас работаю, требует четырех динамически создаваемых массивов строк (каждая строка не длиннее 50 символов). Итак, я пытаюсь написать функцию, которая берет указатель на указатель и динамически выделяет память для этой переменной.
Это насколько я получил:
void makeArray(char*** arr[], int n) {
int i;
*arr = malloc(n*sizeof(char*));
for (i = 0; i<n; i++) {
*arr[i] = malloc(sizeof(char)*50);
}
}
int main() {
char** test;
makeArray(&test,4);
return 0;
}
Когда Я компилирую и запускаю, я получаю эту ошибку:
main.c:16:13: warning: passing argument 1 of ‘makeArray’ from incompatible pointer type [-Wincompatible-pointer-types]
makeArray(&test,4);
^
main.c:4:6: note: expected ‘char ****’ but argument is of type ‘char ***’
void makeArray(char*** arr[], int n) {
Когда я использую C Tutor, функция, кажется, успешно принимает мой массив test
и выделяет слоты указателя 4
. Затем он успешно выделяет 50 символов в слот 0
th test
. Однако, когда l oop запускается снова, я получаю сообщение об ошибке.
Я застрял на этом уже два дня, поэтому я приветствую любые предложения, которые могут быть у добрых пользователей переполнения стека!