首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

问一个关于函数指针的有关问题

2012-09-10 
问一个关于函数指针的问题程序如下:C/C++ code#include iostreamvoid Swap(float &x, float &y){x x +

问一个关于函数指针的问题
程序如下:

C/C++ code
#include <iostream>void Swap(float &x, float &y){    x = x + y;    y = x - y;    x = x - y;}int main(){    void (*fp)(float &, float &);    float a = 3.14, b = 4.5;        fp = Swap;  /* fp = &Swap;  fp = *Swap; */    fp(a,b);    std::cout<<"a:"<<a<<"\tb:"<<b<<std::endl;    return 0;}


小程序,交换变量的值,问题就是注释那一行,为什么用这三种方式,运行的结果都是正确的?

[解决办法]
C/C++左值性精髓(三)左值转换----从函数到指针的转换
[解决办法]
楼上博客中讲的还是收益匪浅,我反汇编了下,确实如此:
Assembly code
    fp = Swap;  00411550  mov         dword ptr [fp],offset Swap (411122h)     fp = &Swap;00411557  mov         dword ptr [fp],offset Swap (411122h)     fp = *Swap;0041155E  mov         dword ptr [fp],offset Swap (411122h) 

热点排行