对一个函数符号取地址,解引述
对一个函数符号取地址,解引用?//////void foo(){}int main(){cout foo endlcout &foo endlcout
对一个函数符号取地址,解引用?
//////
void foo()
{}
int main()
{
cout <<foo <<endl;
cout <<&foo <<endl;
cout <<*foo <<endl;
return 0;
}
//////
三行都输出同一个值。
有人能解释一下三者的语义么?
[解决办法]
都表示函数的首地址,编译器都告诉你了。也许编译器就是这么设计的,对函数名取地址和解引用或者直接使用函数名都表示函数的地址
[解决办法]
对于数组 & 没什么特殊的 和普通变量一样 得到一个指向这个[数组/普通变量]的指针
对于函数也一样 & 得到一个指向这个函数的指针
[解决办法]
维基百科
http://zh.wikipedia.org/wiki/C99#C99
另一个运算符 &,叫做取地址运算符,它将返回一个变量、数组或函数的存储地址。
资料,这个估计是从C99里翻译来的,自己去找找看吧...
[解决办法]+1,自己可以google试试
[解决办法]C语言规定函数名会被转换为指向这个函数的指针,除非这个函数名作为 & 操作
[解决办法]对函数名而言,& 和 * 以及函数名本身是相同的
[解决办法]对函数名取地址, 把他赋值函数指针后 在强转成 unsigned int, 这种方法应该可行