Моя программа работает правильно, но я получаю предупреждение - PullRequest
0 голосов
/ 24 января 2019

Я выделил память для двойного указателя и заполнил ее некоторыми значениями. (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;
}

1 Ответ

0 голосов
/ 24 января 2019

"передаваемый аргумент 1 'cheama_transforma0' делает указатель из целого числа без приведения"

void cheama_transforma0(int (*p)(int **pointer));
int **pointer_d;
int (*p)(int **cacat);
cheama_transforma0(p(pointer_d));

p - это указатель на функцию, которая возвращает int.Если вы передаете возвращаемое значение из функции p в качестве первого аргумента функции cheama_transforma0, компилятор преобразует значение int, возвращаемое функцией p, в тип указателя на функцию int (*)(int **pointer).Таким образом, предупреждение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...