函数名本身就是一个指针的说法是否正确?

philmei 2009-01-17 05:38:19
函数名本身就是一个指针的说法是否正确?

在定义函数的时候,相当于定义了一个指向函数内容的指针,这么理解正确吗?

void name(void){...}; //只是使用name()来使用其中的代码块,name()指向其中的内容。
-----------------------------------------------------
int a;
void length(int){...}; //使用length(a)来使用其中的代码块,只是为这种指针的内容限定了访问条件。
-----------------------------------------------------
至于函数的返回值,只是该代码块执行完毕后返回的数值,并不与函数名就是指针的说法相冲突。

既然:
int **p;//是指向int类型的指针的指针。
那么:
是不是可以说name()就是一个指向name()函数的指针呢?
...全文
1165 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
JYunGe 2012-03-14
  • 打赏
  • 举报
回复 1
在C中的确是这样,在C++中是函数名和参数共同决定的。
bwxzing 2010-12-01
  • 打赏
  • 举报
回复
同意19楼的理解。
cyberhero 2009-01-18
  • 打赏
  • 举报
回复
函数名只是一段代码的一个入口地址而已。和汇编里的
call addr
一样,用哪个指都一样,只要跳到地方就对了
jiarusun000 2009-01-18
  • 打赏
  • 举报
回复
functionname == address
就像是为这个function start address取了一个好记的名字.
shyli 2009-01-18
  • 打赏
  • 举报
回复 1
函数名就是指向这个函数的指针。

#include <iostream>
using namespace std;

void print(char* ch)
{
cout<<ch<<endl;
}

int main()
{
void (*fn1)(char*) = print;
void (*fn2)(char*) = &print;
fn1("a");
fn2("b");
return 0;
}
fibbery 2009-01-18
  • 打赏
  • 举报
回复
函数名和数组名实际上都不是指针,但是,在使用时可以退化成指针,即编译器可以帮助我们实现自动的转换。

例如:
void func();

func和&func是一样的。明确的写法是&func;
china_west 2009-01-18
  • 打赏
  • 举报
回复
不同意
breezes2008 2009-01-18
  • 打赏
  • 举报
回复 1
函数名是一个入口地址!编译器在调用时会自动转化成函数指针。
baihacker 2009-01-17
  • 打赏
  • 举报
回复
函数名就是函数名,在恰当的时候能转换为指向这个函数的指针,其值为函数的地址.
philmei 2009-01-17
  • 打赏
  • 举报
回复
起码它与指针的原理是一样的吧
从另一层面上来讲,从中也感受到了C中的代码在内存中的实际运作方式。
tnfyj 2009-01-17
  • 打赏
  • 举报
回复
函数名是一个地址值
编译器编译的时候会把它当做一个地址来解析
因此如果你有一个同样类型的函数指针变量, 就可以将函数名作为值赋给这个指针变量
zhangyq73 2009-01-17
  • 打赏
  • 举报
回复
函数名不是函数指针,一般编译器调用函数名来调用函数,从这个概念上说函数名现当于函数地址
dalixux 2009-01-17
  • 打赏
  • 举报
回复
可以这样理解
通常在编程中 使用函数名 和函数指针是一样的
使用函数名 编译器编译时会自动转换成函数指针
kay_bryant 2009-01-17
  • 打赏
  • 举报
回复
函数名是一个地址,是主函数调用该函数的一个接口!
aled6825 2009-01-17
  • 打赏
  • 举报
回复
是的
函数名指向一个地址
正如dll调用一样,也是寻找这个接口的地址
waizqfor 2009-01-17
  • 打赏
  • 举报
回复
函数名可以看成一个地址
aozhi 2009-01-17
  • 打赏
  • 举报
回复
函数名可以被看作是地址.
函数的概念不等于函数名.
xiaopoy 2009-01-17
  • 打赏
  • 举报
回复
函数名就是指针名。
符号的一种
agaric 2009-01-17
  • 打赏
  • 举报
回复
函数名是一个地址。而函数指针是指向这个地址的一个变量。
不过从某种意义上来讲,搂主的理解也是可以的。
chenyingshu 2009-01-17
  • 打赏
  • 举报
回复
不是指针,只是函数名与函数的关系
加载更多回复(1)

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧