Я знаю, что это очень простой, но я ДОЛЖЕН понять концепцию, почему она не работает?Двойной указатель на функцию
void printMat(int arr[N][N], int n)
{
int i, j;
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
if (i < j)
{
arr[i][j] = 0;
}
{
arr[i][j] = i+j+2;
}
}
int** triDown(int arr[N][N], int n)
{
int i, j, **a;
for(i = 0; i < n; i++)
{
*(a+i) = (int*)malloc(sizeof(int)*(i+1));
}
for(i=0;i<n;i++)
for(j=0;j<i+1;j++)
{
a[i][j] = arr[i][j];
}
return a;
}
void main()
{
int *arr[N],**NewMat;
printMat(arr,N);
NewMat = triDown(arr,N);
}
Я действительно трудное время, пытаясь понять вещь указатель на указатель, когда речь идет о функциях и динамического распределения. Что должно было быть сделано в NewMat
func?
любое сообщение об ошибке, которое вы получаете? –
Речь идет не о двойном указателе на функцию, а двойном указателе (или действительно указателе на указатель) на 'int'. Кроме того, типы 'int arr [N] [N]' и 'int * arr [N]' * не * то же самое в C. Вам нужно сделать их согласованными или, по крайней мере, вы можете передать 'int arr [N ] [N] 'to' int * arr [N] ', но не наоборот. – lurker
Почему его не то же самое? вот что я не понимаю –