Я знаю, что для замены, изменения любых данных, переданных в качестве аргументов функции, которая изменяет данные, в C нам фактически нужно передать адрес данных, которые будут изменены.Что касается обычных данных или массивов, это довольно просто, но когда речь идет о массиве массивов, я застрял и запутался.
В моем основном у меня было:
int p[20][21];
FILE *f;
f=fopen("intro.txt","rt");
m=0;
n=0;
while( ( c=getc(f) ) != EOF )
{
if(c==' ')
{
p[m][n]=0;
n++;
}
else if(c=='^')
{
pa[m][n]=5;
n++;
}
else if(c=='*')
{
p[m][n]=1;
n++;
}
else if(c=='#')
{
p[m][n]=-1;
m++;
n=0;
}
}
Этот блок кода создает мою матрицу, согласно моему текстовому файлу.В моем проекте это этап инициализации матрицы, который будет использоваться после.
После того, как моя матрица создана, мне нужно изменить некоторые значения в различных позициях в моей матрице, например:
p1m=0;
p1n=0;
p2m=19;
p2n=20;
p[p1m][p1n]=5;
p[p2m][p2n]=5;
Но мне нужно сделать это внутри функции, передать мою матрицу в функцию и изменить мою матрицу в моей основной.
Я попытался установить параметр в функции следующим образом:
void myfunc(int* p[20][21])
и доступ к нему в основном как:
(myfunc &p[20][21])
Или
void myfunc(int** p[20][21])
Но я полагаю, что я делаю это неправильно.