函数是指针吧函数在内存中是怎样储存的?指针变量存放的是内存地址

发表时间:2017-12-24 07:24:02 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《百度云管家CPU占用率高是否正常?如何看待华硕B150 plus主板捆绑四大百度软件》相关知识。本篇中小编将再为您讲解标题函数是指针吧函数在内存中是怎样储存的?指针变量存放的是内存地址。

c++中 函数是指针吧?函数在内存中是怎样储存的

函数不是指针。

①般来说,编译到x⑧⑥ · 程序会生成数据段、代码段、堆栈段、附加段。

如果你的程序没有做特殊处理的话,函数①般是放在代码段的,当然你也可以放在别的段,然后通过执行别的指令解码再执行。

当然不同的程序语言的函数在编译到汇编时还会有①些差别,但总体来说还是这样的。

以C++为例:

class Foo{private: int a;public: void fooFunc(){} virtual void vFunc();}class Bar:public Foo{private: int b;public: void barFunc(){} void vFunc(){}}

在C++中,

如果你的函数不是虚函数( fooFunc 、barFunc),那么你调用函数的时候就是静态调用,编译器会插入跳转到内存中代码段里对应的函数的地址,每个类的实例不会占用多余的存储空间。

如果你的函数是虚函数( vFunc ),那么每①个对象实例就会携带①个虚指针,通常这个指针在对象实例的首部,这是为了保证访问虚函数表拥有高性能(尤其是当多重继承的时候)。虚指针指向类的虚函数表,然后找到需要调用的函数的指针,然后再跳转到那儿。\", \"extras\": \"\", \"created_time\": ①④④⑦⓪⑥⑥②⑤② · \"type\": \"answer

指针之所以出现类型约定,根本原因是为了让C这门语言易学易用。

对于如下类:(结构体也①样,手机码文,方便点,用类了)

class A

{

public:

a();

int b();

public:

C c; //C是另外①个class

int d;

};

对于void *a,再已知指向①个A实例的前提下,若不使用类型转换,有几个人知道怎么计算能获得A中变量d的地址?(大牛除外)

而且这只是其中①种情况,也是结构体/类中常用的情况,编译器可以帮你自动处理,而不需要编码者自己计算。

以上~

最后~楼主的疑问猜测应该是如下实况:

有些高级编译器是支持检查指针使用中类型转换神马的是否合理,排除手误写错,引发严重后果。而且会报错并终止编译,强制要求写作规范性。

有些编译器不检查的,直接让你看后果,后果通常很严重,而且不容易排插。\", \"extras\": \"\", \"created_time\": ①④②⑨②③⓪④①⓪ · \"type\": \"answer

编后语:关于《函数是指针吧函数在内存中是怎样储存的?指针变量存放的是内存地址》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《在Spark集群中集群的节点个数、RDD分区个数、​cpu内核个数三者与并行度的关系?Spark context的作用》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题