打印
[技术问答]

你能分得清函数指针和指针函数么?

[复制链接]
21|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
powerantone|  楼主 | 2024-11-15 15:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
函数指针(Function Pointer)概念:函数指针是一种特殊的指针,它指向一个函数,允许你将函数作为参数传递给另一个函数,或者在程序的其他部分通过指针调用函数。声明示例:void myFunction(void) {
    printf("Hello, World!\n");
}

// 声明一个函数指针
void (*funcPtr)(void);
初始化和使用示例:funcPtr = myFunction; // 将函数指针指向myFunction函数
funcPtr(); // 通过函数指针调用函数
应用示例:使用函数指针调用不同的函数,基于用户输入选择。#include <stdio.h>

void func1(void) {
    printf("Function 1 called.\n");
}

void func2(void) {
    printf("Function 2 called.\n");
}

int main() {
    void (*functions[])(void) = {func1, func2};
    int choice;

    printf("Enter 0 for func1 or 1 for func2: ");
    scanf("%d", &choice);

    if (choice >= 0 && choice < sizeof(functions) / sizeof(functions[0])) {
        (*functions[choice])(); // 通过函数指针数组调用函数
    } else {
        printf("Invalid choice.\n");
    }

    return 0;
}
指针函数(Pointer Function)概念:指针函数是一种返回指针的函数,它允许函数返回一个地址,这个地址可以指向一个变量、数组或其他数据结构。声明示例:int *myPointerFunction(void) {
    static int value = 42;
    return &value;
}
使用示例:int *ptr = myPointerFunction(); // 调用指针函数并获取返回的指针
printf("%d\n", *ptr); // 使用返回的指针
应用示例:使用指针函数返回字符串的地址,并在其他函数中使用这个地址。#include <stdio.h>

char *getString(void) {
    static char str[] = "Hello, World!";
    return str;
}

void printString(char *str) {
    printf("%s\n", str);
}

int main() {
    char *strPtr = getString();
    printString(strPtr); // 使用指针函数返回的指针
    return 0;
}
区别总结函数指针 是一种指针类型,它指向一个函数,可以被用来存储函数的地址,并通过这个地址调用函数。它们在回调函数、事件处理和多态性实现中非常有用。指针函数 是一种函数类型,它返回一个指针,这个指针可以指向一个变量、数组或其他数据结构。它们常用于返回动态分配的内存地址或静态数据的地址。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

554

主题

2392

帖子

4

粉丝