读书人

对一个函数符号取地址解引述

发布时间: 2013-11-29 00:21:24 作者: rapoo

对一个函数符号取地址,解引用?
//////
void foo()
{}

int main()
{
cout <<foo <<endl;
cout <<&foo <<endl;
cout <<*foo <<endl;

return 0;
}
//////
三行都输出同一个值。
有人能解释一下三者的语义么?
[解决办法]
都表示函数的首地址,编译器都告诉你了。也许编译器就是这么设计的,对函数名取地址和解引用或者直接使用函数名都表示函数的地址
[解决办法]
对于数组 & 没什么特殊的 和普通变量一样 得到一个指向这个[数组/普通变量]的指针
对于函数也一样 & 得到一个指向这个函数的指针

[解决办法]

引用:
多谢 1 楼,我知道对于数组, c 语言有对其 ”取地址“ 特殊处理,但是函数签名还没找到确切资料。


维基百科
http://zh.wikipedia.org/wiki/C99#C99
另一个运算符 &,叫做取地址运算符,它将返回一个变量、数组或函数的存储地址。

资料,这个估计是从C99里翻译来的,自己去找找看吧...
[解决办法]
引用:
引用:
多谢 1 楼,我知道对于数组, c 语言有对其 ”取地址“ 特殊处理,但是函数签名还没找到确切资料。

维基百科 http://zh.wikipedia.org/wiki/C99#C99
另一个运算符 &,叫做取地址运算符,它将返回一个变量、数组或函数的存储地址。

资料,这个估计是从C99里翻译来的,自己去找找看吧...

+1,自己可以google试试
[解决办法]
C语言规定函数名会被转换为指向这个函数的指针,除非这个函数名作为 & 操作
[解决办法]
对函数名而言,& 和 * 以及函数名本身是相同的
[解决办法]
对函数名取地址, 把他赋值函数指针后 在强转成 unsigned int, 这种方法应该可行

读书人网 >C语言

热点推荐