← 返回首页
指针函数与函数指针
发表时间:2024-10-14 05:06:01
指针函数与函数指针

1.指针函数

指针函数本质是一个函数,通常指返回指针类型的函数,其返回值类型为某一类型的指针。‌

实例:

#include <stdio.h>


int* sort(int arr[],int size) 
{
    int temp,len = size;
    //冒泡排序
    for (int i = 0; i < len - 1; i++)
    {
        for (int j = 0; j < len - 1 - i; j++)
        {
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;

            }
        }
    }
    return arr;
}


int main()
{
    int arr[] = {23, 11, 12, 9, 8};

    int* ptr = sort(arr,5);

    for (int i = 0; i < 5;i++)
    {
       printf("%d ",*(ptr+i));
    }

    return 0;
}

2.函数指针

函数指针是指向函数的指针变量。‌ 在C语言中,函数指针允许动态选择要调用的函数,通常用于实现回调函数。

实例:

#include <stdio.h>


int* sort(int arr[],int size) 
{
    int temp,len = size;
    for (int i = 0; i < len - 1; i++)
    {
        for (int j = 0; j < len - 1 - i; j++)
        {
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;

            }
        }
    }
    return arr;
}


int main()
{
    int arr[] = {23, 11, 12, 9, 8};
    //定义函数指针
    int *(*fn)(int [],int);
    fn = sort; //初始化
    int *ptr = fn(arr, 5);

    for (int i = 0; i < 5;i++)
    {
       printf("%d ",*(ptr+i));
    }

    return 0;
}