再学习函数指针的时候,见过这么一个例子:
成都创新互联是一家集网站建设,姜堰企业网站建设,姜堰品牌网站建设,网站定制,姜堰网站建设报价,网络营销,网络优化,姜堰网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
int func(int x); /* 声明一个函数 */
void (*f) (int x); /* 声明一个函数指针 */
f=func; /* 将func函数的首地址赋给指针f */
赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。
所以 函数名代表函数的入口地址吧
函数名在主函数里是个接口或者叫入口,你可以通过定义一个指针来指向他
void * p;
int fun(int a);
p=fun;
对的,函数名仅代表函数的名称,就和人的名字一样只是一个代号。
但要注意的是:
1、要以字母开头;
2、不能以关键字当函数名;
这两条是硬规定,就像人起名字要符合法律规定。
3、起一个有意义的函数名对维护程序有很大的作用;
这不是硬性规定,但很重要,就像人起名字都代表美好的愿望。
要知道main函数也是由其他的程序调用的。
我们编写的程序,最终是不存在所谓的函数名的,有的只有内存单元地址0xffeedd00.
我们的程序执行时,程序加载到内存,比方说整个程序所占用的内存范围是0xffee0000 ~ 0xffeedd00,这么多。
假设程序有一个小函数fun(),那么它的范围可能是0xffee0000~0xffee00ff。
那么函数fun()的入口地址是多少? 0xffee0000。。
那么函数名fun实际上就是0xffee0000的别称。
你用一个指针指向这个函数,那么你把 指针 = 函数名,实际就是把0xffee0000这个内存单元的地址给指针p。
所以,结论是:
函数名 是 程序在执行时, 函数所占内存单元块的 首地址 的别称。