指针进阶

指针进阶

我们通过一个例题来了解函数指针

int Add(int x, int y) {
    int z = x + y;
    return z;
}
int main() {
    int a = 10;
    int b = 20;
    int sum = Add(a, b);
    printf("%d", sum);
    return 0;
}

这个我们的一个Add函数,我们函数也是有地址的,而且以下两种方法均能打印出函数的地址 ,我们的函数名就是地址

printf("%p",Add);
printf("%p",&Add);

那我们把函数的地址怎么存起来呢?我们知道存放地址的叫指针,那么存放函数地址的叫函数指针,那么我们函数指针怎么来写?

int (*pa)(int,int)=Add;
pa==Add;pa就是一个函数的地址,
printf("%p",Add);
printf("%p",pa);
打印输出结果一样

指针进阶

解析:

指针进阶

应用:利用函数指针来调用函数

int Add(int x, int y) {
    int z = x + y;
    return z;
}
int main() {
    int a = 10;
    int b = 20;
    int(*pa)(int, int) = Add;
    printf("%d\n",pa(2,3));
    printf("%d\n", (*pa)(4, 6));
    printf("%d\n", Add(2, 3));
    return 0;
}

指针进阶
这三种方法都是一样的概念,调用Add函数,把参数传入Add函数中,然后进行打印输出。

我们来看两个例题:
指针进阶
这则表达式表达的意思是什么???
解析:

指针进阶
代码二:
指针进阶

指针进阶

上一篇:9E - Interestring graph and Apples


下一篇:Codeforces Round #714 (Div. 2) 题解(A-D)