一个函数在编译之后,会占据一部分内存,而它的函数名,就是这段函数的首地址。看如下代码
//
// Created by lwl on 2019/6/2.
//
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int max(int a, int b) {
if (a > b) {
return a;
} else {
return b;
}
}
int main() {
printf("[max]%p\n", max); // [max]0x40051d
printf("[max_pointer]%p\n", &max); // [max_pointer]0x40051d
int(*p)(int, int);
int(*pp)(int, int);
p = max;
pp = &max;
printf("[p]%p\n", p); // [p]0x40051d
printf("[*pp]%p\n", pp); // [*pp]0x40051d
}
也就是说,函数的首地址max
与&max
输出的值竟然是一样的!!!为啥???