跳到主要内容

函数指针和指针函数的区别 ?

参考答案:

函数指针和指针函数是C语言中两个重要的概念,它们在语法和用途上有一些区别。

  1. 函数指针

    • 函数指针是一个指针变量,它存储的是函数的地址。
    • 你可以通过函数指针来调用函数。
    • 语法上,函数指针的声明通常如下:返回类型 (*函数指针名)(参数列表);
    • 示例:
    	c`int (*func_ptr)(int, int);  // 声明一个函数指针,该函数接受两个int参数并返回一个int
    
    	int add(int a, int b) {
    	    return a + b;
    	}
    
    	int main() {
    	    func_ptr = add;  // 将add函数的地址赋给func_ptr
    	    int result = func_ptr(3, 4);  // 使用函数指针调用函数
    	    printf("%d\n", result);  // 输出:7
    	    return 0;
    	}`
    
  2. 指针函数

    • 指针函数是一个返回指针的函数。
    • 它不是存储函数地址的指针,而是返回一个指针。
    • 语法上,指针函数的声明通常如下:返回类型* 函数名(参数列表);
    • 示例:
    	c`int* get_pointer() {
    	    static int value = 42;  // 使用静态变量确保函数返回的地址在整个程序运行期间有效
    	    return &value;  // 返回变量的地址
    	}
    
    	int main() {
    	    int* p = get_pointer();  // 调用指针函数,并将返回的指针赋值给p
    	    printf("%d\n", *p);  // 输出:42
    	    return 0;
    	}`
    

总结:

  • 函数指针是一个指针,它指向一个函数。
  • 指针函数是一个函数,它返回一个指针。

在实际编程中,函数指针常用于回调函数、函数表、函数指针数组等场景,而指针函数则可能用于返回动态分配的内存地址、返回数组的首地址等场景。