Доброго всем времени суток.
Подскажите пожалуйста как решить проблему.
Есть следующий код, функция ch меняет содержимое двумерного массива char.
В MSVC7 данный код чудесно компилится и работает, но мне нужно его откомпилить на HP-UX компилятором c89.
Но вот тут и проблема, при попытке компиляции c89 отображается сообщение ошибки компиляции
cc: "test.c", line 4: error 1000: Unexpected symbol: "&".
cc: "test.c", line 23: error 1000: Unexpected symbol: "&".
#include "stdlib.h"
#include "stdio.h"
void ch(char **&i);
int _tmain()
{
char **buf = NULL;
printf("%p\n",buf);
ch(buf);
printf("%p\n",buf);
printf("\n%s", buf[0]);
printf("\n%s", buf[1]);
printf("\n%s", buf[2]);
return 0;
}
void ch(char **&i)
{
i = (char**)malloc(3*sizeof(char*));
i[0] = (char*)calloc(6,sizeof(char));
i[1] = (char*)calloc(6,sizeof(char));
i[2] = (char*)calloc(6,sizeof(char));
strcpy(i[0],"test1");
strcpy(i[1],"test2");
strcpy(i[2],"test3");
}
Соответственно нужно использовать тройной указатель — void ch(char ***i);
Но вот тут загвоздка — не получается выделить нормально память под элементы массива в данном случае. Программа выпадает в кору.
Пробовал так:
void ch(char ***i)
{
*i = (char**)malloc(3*sizeof(char*));
*i[0] = (char*)calloc(6,sizeof(char));
*i[1] = (char*)calloc(6,sizeof(char));
*i[2] = (char*)calloc(6,sizeof(char));
strcpy(*i[0],"test1");
strcpy(*i[1],"test2");
strcpy(*i[2],"test3");
}
Но видимо что-то неправильно. Раньше не сталкивался с подобной задачей.
Буду очень благодарен за ответ.
добавлена разметка — Кодт