我已经为双指针分配了内存,并用一些值填充了它。 (1) 之后,我创建了一个用 0 填充整数的函数。然后我创建了一个指向该函数的指针,并创建了另一个使用该指针作为参数的函数。
我运行了该程序并且它正在运行,但问题是我收到了警告:
passing argument 1 of 'cheama_transforma0' makes pointer from integer without a cast
这是我的代码:
#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;
}
最佳答案
"passing argument 1 of 'cheama_transforma0' makes pointer from integer without a cast"
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)
函数指针类型。因此发出警告。
关于c - 我的程序运行正常,但收到警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54337280/