以下,转载自http://blog.sina.com.cn/s/blog_6aafe9c90100xg2y.html

对一个函数进行 如下操作:

1、函数名地址

2、函数名取地址

3、函数名解引用

它们的值会是怎么样的?

void fun(void)
{
 printf("GooD!\n");

}

int main(void)
{
 cout<<fun<<endl;//输出0041117C
 cout<<&fun<<endl;/输出0041117C
 cout<<*fun<<endl;/输出0041117C

return 0;
}

说明它们都指向了函数的首地址

解引用:

对于c语言中指针的操作符有两个:&和*。对于&,好理解,翻译的也不错,就是“取地址”的意思。但对于*,翻译为“解引用”,字面意思不好理解,即使看了后面内容才知道不过是“取指针指向的地址的内容”,也仍然是觉得怪怪的,“解引用”这个词难记也难于从字面直接判断意思,以致时间长了还是感觉像见了熟悉的陌生人。

翻了好多资料,以及各种网上解释,现在大约有点意思了。依我现在的理解,约摸是这样:

“引用”这个词,出现最多的场景就是:在文章或者注脚里,写上“引用(或摘自)某某作者某篇文章”,意思很明了,就是出现在本文的不是作者自己的话,而是别个作者的话,于是“引用”的意思就是拿过来用。(一下提到”场景“,就是指的这个例子)

国外资料出现的一词“reference",应译为”参考,参照“,在我们中文技术资料上翻译为了”引用“,照上面说的那种场景,倒也可以理解的通。而”dereference“翻译为”解除参照“,资料上翻译为”解引用“,如果回到上面那种场景,那”解引用“或者”解除参照“就是:我们拿了(引用)别个作者的话,却没有注解(解除参照)说这是别人的话,实际上我认为”去引用化“也许更能表达这个过程或者这个意思。那么对应到C语言中,指针变量是存储”其它变量“的地址的,当我们用”*“去操作指针时,我们的意思就是把那个”其它变量“的内容拿过来放在这里,却不说明这是别人(在这里就是指针存储的变量)的东西,当然这只是类比。过程差不多相似,只要能帮助理解,就阿弥陀佛了。于是”解引用“这样来理解,貌似好多了。不知道大家懂我说的了没?汗

网上查的”dereference“在技术资料上翻译真是各种多阿,这里不说了,反正其它翻译也许更难理解。

翻译别国资料,用词真是难,毕竟两种语言词汇不一定完完全全的相对应。尤其技术资料,还要讲究专业术语,翻译成中文时,那是真的千挑万选,才搞出一个像”专业术语“的词汇来表达。现在国内作者翻译水平参差不齐,加上对术语的创造,使得翻译后的中文资料难于阅读啊。比如上面的”解引用“就是一例。再说个”正则表达式“,从字面意思来看,完全不懂,(谁要真能从字面看出意思来,那我拜你为神,来教教我吧),或许看英文都比我们自己的中文好理解一点。但是纯英文看的累,还慢,真是两难啊。

经考证,C语言是女的...原因如下: 1.无论你让他干什么,她绝对不可能自己找到方法。 2.总是用复杂的方法解决简单的问题 3.不可能自主认识到本身错误 4.浪费时间是十分正常的事情 5.无论跟她说什么,都得用她能理解的方式做充分说明 6.只要你有一点错,她一定可以挑出来 7.反正,是你的错

函数名地址、函数名取地址、函数名解引用问题相关推荐

  1. 类与对象:类的6个默认成员函数: 构造函数、析构函数、拷贝构造函数、赋值操作符重载、默认拷贝构造与赋值运算符重载的问题、const成员函数、 取地址及const取地址操作符重载

    1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类.任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数. 构造函数 析构函数 拷贝构造函数 赋值操作符重载 const成员函数 ...

  2. C++ const对成员函数的修饰 及 取地址及const取地址操作符重载

    const对成员函数的修饰 将const修饰的类成员函数称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this 指针,表明在该成员函数中不能对类的任何成员进行修改. 格式 ...

  3. oracle中更改表名语句,转:取Oracle 表名 字段名 注释等实用语句

    1.查找表的所有索引(包括索引名,类型,构成列): select t.*,i.index_type fromuser_ind_columns t,user_indexes i where t.inde ...

  4. 引用、取址运算符、解引用运算符——傻傻分不清楚

    引用 对象的别名.通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名. C++11中新增了:右值引用(rvalue reference),这种引用主要用于内置类.严格来说, 平时提 ...

  5. C++ 中的:“引用” 和“取地址符”的区别和作用

    引用 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样. &作为引用的时候,必须在定义时候就进行初始化,若不进行初始化则会编译报错. int N; int &r ...

  6. C++中如何区分引用和取地址符号?

    引用是在写函数定义的时候用,调用的时候直接写,没有取地址符&, 指针是在函数定义的时候用*,调用的时候用取地址符号&,例如: void funcA(int& a,int& ...

  7. 一、初级篇——指针(*)、取地址()、解引用(*)与引用()的区别

    1. 初步了解--指针与取地址 先看程序: #include<stdio.h>int main(void) {int num = 7;int *p = #//初始化指针,也可以写作int* ...

  8. 指针(*)、取地址()、解引用(*)与引用()

    指针(*).取地址(&).解引用(*)与引用(&) C++ 提供了两种指针运算符,一种是取地址运算符 &,一种是间接寻址运算符 *. 指针是一个包含了另一个变量地址的变量,您可 ...

  9. 地址有关码和地址无关码

    几个地址的说明:    (cpu看来)    (程序员看来) 1.运行地址<---->链接地址 2.加载地址<---->存储地址 他们对应等价,只是从不同的角度说. 进一步阐述 ...

  10. python输入名字配对情侣网名_输入姓名配对情侣网名

    输入姓名配对情侣网名 输入名字自动取qq网名 情侣网名(带对方名字) 输入名字取网名免费 输名字查询网名 ꦿོ网名生成器 输名字查询网名 根据名字取快手昵称 加名字的网名 1.肆无↗忌惮魡伤迶多鬺 2 ...

最新文章

  1. VMware记录(一)- vCenter Server 服务安装提示无法解析此完全限定域名
  2. centos7 源码编译安装mysql 5.7.21
  3. InfoWorld的日志管理系统评测
  4. STM32与宇电设备实现AI-BUS通讯
  5. IIS 6.0曝远程代码执行漏洞 安全狗可拦截
  6. Leetcode-952 Largest Component Size by Common Factor(按公因数计算最大组件大小)
  7. CentOS添加新角色(新增一个具有root权限的新用户)
  8. boost安装_Boost编译与使用
  9. Leetcode 207. 课程表(值得一刷的宽搜)
  10. DMX512协议是什么 DMX512数字灯光控制系统介绍
  11. 用计算机绘制工作表,《计算机操作基础Excel练习题答案.doc
  12. 计算机网卡和交换机网卡以及交换机数据转发
  13. 你真的懂Java怎么输出Hello World吗?
  14. 新手小白安装Ubuntu18.04后的操作指南
  15. 模电和数电复习资料//2021-2-18
  16. android loadsvm raw,OpenCV机器学习:Android上利用SVM实现手写体数字识别
  17. (一)、写一个怪物的类,类中有属性姓名(name),攻击力(attack),有打人的方法(fight)。(方法的重写)...
  18. 小白学爬虫---爬取中国房价工资比
  19. zigbee入网过程深入解析(Ubiqua抓包)
  20. stm8 硬件SPI

热门文章

  1. 装载M1芯片的Mac安装“AE”时,出现错误代码“501”怎么办?
  2. 通过Field Of View值计算屏幕成像的宽高
  3. java5至java17新特性总结(开发相关)
  4. PTA 7-152 百钱百鸡
  5. Spring Boot将端口8080重定向到8443
  6. 乘法逆元 java_java写的三个求乘法逆元的算法
  7. 论文阅读 2021——SUNet: Symmetric Undistortion Network for Rolling Shutter Correction
  8. [Revit教程]斑马:分享一个用Revit自适应构件做安全疏散距离分析的方法#S007
  9. MySQL通过sql语句获取当前日期|时间|时间戳
  10. 黑客攻击-木马程序(2)