函数名地址、函数名取地址、函数名解引用问题
以下,转载自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“在技术资料上翻译真是各种多阿,这里不说了,反正其它翻译也许更难理解。
翻译别国资料,用词真是难,毕竟两种语言词汇不一定完完全全的相对应。尤其技术资料,还要讲究专业术语,翻译成中文时,那是真的千挑万选,才搞出一个像”专业术语“的词汇来表达。现在国内作者翻译水平参差不齐,加上对术语的创造,使得翻译后的中文资料难于阅读啊。比如上面的”解引用“就是一例。再说个”正则表达式“,从字面意思来看,完全不懂,(谁要真能从字面看出意思来,那我拜你为神,来教教我吧),或许看英文都比我们自己的中文好理解一点。但是纯英文看的累,还慢,真是两难啊。
函数名地址、函数名取地址、函数名解引用问题相关推荐
- 类与对象:类的6个默认成员函数: 构造函数、析构函数、拷贝构造函数、赋值操作符重载、默认拷贝构造与赋值运算符重载的问题、const成员函数、 取地址及const取地址操作符重载
1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类.任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数. 构造函数 析构函数 拷贝构造函数 赋值操作符重载 const成员函数 ...
- C++ const对成员函数的修饰 及 取地址及const取地址操作符重载
const对成员函数的修饰 将const修饰的类成员函数称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this 指针,表明在该成员函数中不能对类的任何成员进行修改. 格式 ...
- oracle中更改表名语句,转:取Oracle 表名 字段名 注释等实用语句
1.查找表的所有索引(包括索引名,类型,构成列): select t.*,i.index_type fromuser_ind_columns t,user_indexes i where t.inde ...
- 引用、取址运算符、解引用运算符——傻傻分不清楚
引用 对象的别名.通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名. C++11中新增了:右值引用(rvalue reference),这种引用主要用于内置类.严格来说, 平时提 ...
- C++ 中的:“引用” 和“取地址符”的区别和作用
引用 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样. &作为引用的时候,必须在定义时候就进行初始化,若不进行初始化则会编译报错. int N; int &r ...
- C++中如何区分引用和取地址符号?
引用是在写函数定义的时候用,调用的时候直接写,没有取地址符&, 指针是在函数定义的时候用*,调用的时候用取地址符号&,例如: void funcA(int& a,int& ...
- 一、初级篇——指针(*)、取地址()、解引用(*)与引用()的区别
1. 初步了解--指针与取地址 先看程序: #include<stdio.h>int main(void) {int num = 7;int *p = #//初始化指针,也可以写作int* ...
- 指针(*)、取地址()、解引用(*)与引用()
指针(*).取地址(&).解引用(*)与引用(&) C++ 提供了两种指针运算符,一种是取地址运算符 &,一种是间接寻址运算符 *. 指针是一个包含了另一个变量地址的变量,您可 ...
- 地址有关码和地址无关码
几个地址的说明: (cpu看来) (程序员看来) 1.运行地址<---->链接地址 2.加载地址<---->存储地址 他们对应等价,只是从不同的角度说. 进一步阐述 ...
- python输入名字配对情侣网名_输入姓名配对情侣网名
输入姓名配对情侣网名 输入名字自动取qq网名 情侣网名(带对方名字) 输入名字取网名免费 输名字查询网名 ꦿོ网名生成器 输名字查询网名 根据名字取快手昵称 加名字的网名 1.肆无↗忌惮魡伤迶多鬺 2 ...
最新文章
- VMware记录(一)- vCenter Server 服务安装提示无法解析此完全限定域名
- centos7 源码编译安装mysql 5.7.21
- InfoWorld的日志管理系统评测
- STM32与宇电设备实现AI-BUS通讯
- IIS 6.0曝远程代码执行漏洞 安全狗可拦截
- Leetcode-952 Largest Component Size by Common Factor(按公因数计算最大组件大小)
- CentOS添加新角色(新增一个具有root权限的新用户)
- boost安装_Boost编译与使用
- Leetcode 207. 课程表(值得一刷的宽搜)
- DMX512协议是什么 DMX512数字灯光控制系统介绍
- 用计算机绘制工作表,《计算机操作基础Excel练习题答案.doc
- 计算机网卡和交换机网卡以及交换机数据转发
- 你真的懂Java怎么输出Hello World吗?
- 新手小白安装Ubuntu18.04后的操作指南
- 模电和数电复习资料//2021-2-18
- android loadsvm raw,OpenCV机器学习:Android上利用SVM实现手写体数字识别
- (一)、写一个怪物的类,类中有属性姓名(name),攻击力(attack),有打人的方法(fight)。(方法的重写)...
- 小白学爬虫---爬取中国房价工资比
- zigbee入网过程深入解析(Ubiqua抓包)
- stm8 硬件SPI
热门文章
- 装载M1芯片的Mac安装“AE”时,出现错误代码“501”怎么办?
- 通过Field Of View值计算屏幕成像的宽高
- java5至java17新特性总结(开发相关)
- PTA 7-152 百钱百鸡
- Spring Boot将端口8080重定向到8443
- 乘法逆元 java_java写的三个求乘法逆元的算法
- 论文阅读 2021——SUNet: Symmetric Undistortion Network for Rolling Shutter Correction
- [Revit教程]斑马:分享一个用Revit自适应构件做安全疏散距离分析的方法#S007
- MySQL通过sql语句获取当前日期|时间|时间戳
- 黑客攻击-木马程序(2)