VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 564|回复: 2

[原创] 成都老沈骑游 的报到帖!

[复制链接]
97_avatar_middle
在线会员 发表于 2017-8-4 22:43:53 | 显示全部楼层 |阅读模式
以下是我学习函数的体会,如有不对,可以展开讨论。
先看下列程序:
#include<iostream>
using namespace std;
void simple()
{ cout<<”It is a simple program。\n”;}
int main()
{
  cout<< “Call function…\n”;
  simple();
  (&simple) ();
  (*&simple) ();
cout<< “Address of function…\n”;
  cout<< simple<<endl;
  cout<< &simple <<endl;
cout<< *&simple <<endl;
}
运行的结果:
Call function…
It is a simple program。
It is a simple program,
It is a simple program,
Address of function:
0043B248
0043B248
0043B248
我们从中可以看出:
simple();是名字调用,(&simple) ();是地址方式调用,(*&simple) ();是间址调用。函数名字本质上函数入口地址,这一点从程序运行结果可以看出。这三种调用方式,都能得到相同的结果。函数名后面的括号(),表示一个动作,在调用函数,驱动这个函数执行代码。因此,调用函数的语句(或表达式)有两部分组成:
      函数地址(实际参数表)
函数地址实际上是一个地址表达式,可以是函数名,如simple,或者能够表示函数入口地址如(&simple),(*&simple)。因此,当我们看到一个函数原型,如:void simple(),simple是一个地址表达式,()表示一个动作,驱动函数执行代码。





上一篇:C++回调函数之我的理解
下一篇:关于函数类型的思考
01_avatar_middle
online_admins 发表于 2017-8-5 00:14:24 | 显示全部楼层
赞一个,确实是这么回事!感谢楼主分享!
54_avatar_middle
online_vip 发表于 2017-8-5 04:48:06 | 显示全部楼层
虽然结果一样,值也相同,但意义不一样
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-1-24 11:26

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表