飘
?灰狗
意思是函数名 存储了 一个基地址 和一个偏移地址?
tna
也就说,函数调用是直接访问地址,函数指针经过两层
最终还是地址
狗灰
?飘 函数名不存储地址,是调用函数名的地址才存储相对地址。
call指令编译后1个字节,然后后面接着的4个字节存相对地址。
喵个了喵
果然大腿 狗灰
这个也是因为C/C 艹的语法造成的错觉,直接函数名的类型是就函数类型,&函数名则是函数指针常量类型,而C/C艹语法允许函数类型隐式转换为函数指针类型,所以才有了这两个一样的效果:
int (*p1)(int) = putchar; // 按C艹的语法来看这个调用的是:putchar.operator int(*)(int)()
int (*p1)(int) = &putchar; // 按C艹的语法来看这个调用的是:putchar.operator &()
而putchar.operator int(*)(int)()和putchar.operator &()返回的一样的结果而已飘
6666
我一直没搞懂
函数名是个对象 调用函数 就是执行对象的()操作符 这样理解?
?灰狗
飘
哦 搜嘎 那对象就不存在地址 只有指向对象的 才有地址可言
狗灰
这样就可以看出两个的不同了吧!
函数本身可以被引用,函数取地址操作返回的是个临时对象,所以不能被引用。?飘 只有指向对象和调用对象的时候才有地址产生,对象本身没有自己的地址。不太对,应该是:只有指向对象和调用对象的时候才有地址的使用,对象本身没有存储自己的地址。毛金大
eclipse 这里的东西怎么都没了 怎么打开?