C新手在这里.试图找出我的程序中的错误.
功能原型:
float* convolve(int (*)[10], int (*)[3], int *, int);
Run Code Online (Sandbox Code Playgroud)
实际功能:
float* convolve(int* ImdataPtr, int* KernelPtr, int* size, int sizeKernel)
Run Code Online (Sandbox Code Playgroud)
如何在main中调用它:
float* output;
output = convolve(input,kernel,sizeIm,3);
Run Code Online (Sandbox Code Playgroud)
编译错误:
program.c:55:8: error: conflicting types for ‘convolve’
Run Code Online (Sandbox Code Playgroud)
请帮忙...
问题是原型不匹配.确保类型是完全一样的,因为int(*)[10]和int(*)[3]不同类型的比int*:
float* convolve(int(*)[10], int(*)[3], int*, int);
float* convolve(int (*ImdataPtr)[10], int (*KernelPtr)[3], int* size, int sizeKernel) {
// etc
}
Run Code Online (Sandbox Code Playgroud)
您可以(也可能应该)使它们完全相同,包括参数名称:
float* convolve(int (*ImdataPtr)[10], int (*KernelPtr)[3], int* size, int sizeKernel);
float* convolve(int (*ImdataPtr)[10], int (*KernelPtr)[3], int* size, int sizeKernel) {
// etc
}
Run Code Online (Sandbox Code Playgroud)
我不得不查找如何声明这些,所以你可能会发现C指针指向数组/指针数组的问题消歧也很有用.int*[3]是一个指针数组int(只是向后读),但是int(*)[3]指向数组的指针int.