C基础笔记(函数指针)

指针调用:在一个函数里访问另一个函数里的变量

 在一个函数里访问另一个函数里的变量 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
void swap(int* a, int* b);
int main()
{
int a=1;
int b=2;
printf("a=%d,b=%d\n",a,b);     //   %p表示地址符
swap(&a,&b);                //调用swap函数
printf("a=%d,b=%d\n", a,b);
return 0;
}
void swap(int * a,int * b)  //交换值
{
    int t=*a;
    *a=*b;
    *b = t;
}

结果:

a=1,b=2

a=2,b=1

 函数指针:populate_array() 函数定义了三个参数,第三个参数是函数的指针,通过该函数来设置数组的值

         定义回调函数 getNextRandomValue(),使它返回一个随机值,它作为一个函数指针传递给 populate_array() 函数。

复制代码
#include <stdlib.h>  
#include <stdio.h>
void populate_array(int *array, size_t arraySize, int (*getNextValue)(void))
{
    for (size_t i=0; i<arraySize; i++)
        array[i] = getNextValue();
}
// 获取随机值
int getNextRandomValue(void)
{
    return rand();
}
int main(void)
{
    int myarray[10];
    /* getNextRandomValue 不能加括号,否则无法编译,因为加上括号之后相当于传入此参数时传入了 int , 而不是函数指针*/
    populate_array(myarray, 10, getNextRandomValue);
    for(int i = 0; i < 10; i++) {
        printf("%d ", myarray[i]);
    }
    printf("\n");
    return 0;
}
复制代码

 

posted @   罗悠然  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示