小编Spe*_*eed的帖子

使用带有数组参数的函数指针的分段错误

今天我开始学习C,我陷入了函数指针的困境。这是我的代码:

\n

主要.c:

\n
\n#include <stdio.h>\n\nint sumOfElements(int *arr, int arr_elements);\n\nint main()\n{\n\n    int (*ptr)(int,int) = NULL;\n    ptr = sumOfElements;\n    int a[] = {128, 64, 32, 16, 8, 4, 2, 1};\n    printf("Total of price is: %d", ptr(a, 8));\n\n}\n\nint sumOfElements(int *arr, int arr_elements)\n{\n    int k =0;\n    int total;\n    for(;k < arr_elements;k++)\n    {\n        total += arr[k];\n    }\n    return total;\n}\n\n
Run Code Online (Sandbox Code Playgroud)\n

我想做的是访问函数中数组的元素sumOfElements。当我正常调用它时,一切都会顺利。当我尝试使用 时function pointer,编译器之前会向我抛出一些警告,然后是Segmentation Fault错误:

\n
main.c:17:9: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]                               \nmain.c:19:41: warning: passing argument 1 …
Run Code Online (Sandbox Code Playgroud)

c arrays function-pointers implicit-conversion function-declaration

0
推荐指数
1
解决办法
676
查看次数