Я выделил память для двойного указателя и заполнил ее некоторыми значениями. (1) После этого я создал функцию, которая заполняет целые числа 0. Затем я сделал указатель на эту функцию и создал другую функцию, которая использует этот указатель в качестве аргумента.
Я запустил программу, и она работала, но проблема заключалась в том, что я получал предупреждение:
передача аргумента 1 'cheama_transforma0' делает указатель из целого числа без приведения
Это мой код:
#include <stdio.h>
#include <stdlib.h>
void printeaza_pointer(int **cacat){
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
printf("%d\n",cacat[i][j]);
}
putchar('\n');
}
}
int transforma_in0(int **cacat){
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
cacat[i][j] = 0;
}
}
return 0;
}
void cheama_transforma0(int (*p)(int **pointer)){
}
int main()
{
int (*p)(int **cacat);
int **pointer_d = (int **)malloc(sizeof(int*)*3);
for(int i = 0; i < 3; i++){
pointer_d[i] = (int *)malloc(sizeof(int)*3);
}
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
pointer_d[i][j] = 1;
}
}
p = transforma_in0;
printeaza_pointer(pointer_d);
cheama_transforma0(p(pointer_d));
printeaza_pointer(pointer_d);
return 0;
}