关于参数的使用范围问题

请问一个工具函数的其中一个参数是一个指针函数,这个指针函数也有参数并有返回值,那么工具函数的编写可以写指针函数里的参数吗

应该是可以的,在工具函数调用这个指针函数,把参数传给它即可,但不知道我理解的是不是和你一样,测试代码如下:

参考资料:
C Primer Plus(第6版)中文版- 第14章 结构和其他数据形式 - 14.14 函数和指针 (第481页,第482页)

#include <stdio.h>

// 指针函数,用于返回数组arr中寻找指定的数num的地址 
//  int * arr 指向int数组的指针 
//int n   数组长度 
//int num 为 需要查找的数字  
int * findArrNum(int *arr,int n,int num){
    
    int i;
    for(i=0;i<n;i++){
        if(arr[i]==num){  // 如果数组中当前元素的值等于num,则返回指向这个数 的指针 
            return arr+i( 
        }
    }
    
    return NULL; // 如果没有找到返回NULL 
}

//   int * (*pf)(int *,int ,int) 指向返回值为int指针,参数为一个int指针,两个int的函数的指针 (函数指针) 
//  int * arr 指向int数组的指针 
//int n   数组长度 
//int num 为 需要查找的数字 
int * toolFunc(int * (*pf)(int *,int ,int),int * arr,int n,int num){
    
    // 利用传入toolFunc函数的后3个参数来调用 传入toolFunc函数的函数指针指向的函数 
    int * p =     (*pf)(arr,n,num);
    return p; //返回调用函数的结果 
} 

int main(void){
    
    int arr[10] = {1,2,3,4,5,6,7,8,9,10};
    int num;
    printf("请输入要查询的数字:");
    scanf("%d",&num);
    // 让函数指针pf指向 findArrNum函数 
    int * (*pf)(int *,int ,int) = findArrNum; 
    int * p = toolFunc(pf,arr,10,num); // 调用工具函数toolFunc来测试函数调用的结果
    
    // 打印结果 
    if(p!=NULL){
        printf("目标值的地址是:%p, 它的值是:%d\n",p,*p);
    } else{
        printf("在数组中没有找到目标值%d。\n",num);
    }
    
    return 0;    
}

img