引用:&(reference)与间接引用:*(dereference)
2014-03-10 16:10
337 查看
1. 符号 &(reference),表示".....的地址"("address of"),因此成为地址操作符(adress operator),又称引用操作符(reference operator)。例如:
将变量myvar的地址赋给变量foo,因为当在变量名称myvar 前面加ampersand (&) 符号,foo指的将不再是该变量的内容,而是它在内存中的地址。在程序运行之前,变量的内存地址是不可知的,但为了便于理解,我们假设myvar的内存地址是1776。然后我们看下列代码:
各自变量的存储值如下图所示:
存储其它变量地址的变量(如上面例子中的foo ),我们称之为指针(pointer)。在C++ 中,指针pointers 有其特定的优点,因此经常被使用。在后面我们将会看到这种变量如何被声明。
2. 符号 *(dereference),表示".....所指向的值"("value pointed to by"),看下面的声明:
可以读作:baz等于foo所指向的值。baz的值变为25,因为foo存储的是内存地址1776,而
注意加或不加星号*的不同(下面代码中注释显示了如何读这两个不同的表达式):
[code]foo = &myvar;[/code] |
myvar = 25; foo = &myvar; bar = myvar; |
存储其它变量地址的变量(如上面例子中的foo ),我们称之为指针(pointer)。在C++ 中,指针pointers 有其特定的优点,因此经常被使用。在后面我们将会看到这种变量如何被声明。
2. 符号 *(dereference),表示".....所指向的值"("value pointed to by"),看下面的声明:
[code]baz = *foo;[/code] |
*foo
指的是内存地址1776指向的值,即25。
注意加或不加星号*的不同(下面代码中注释显示了如何读这两个不同的表达式):
beth = ted; // beth 等于 ted ( 1776 ) |
beth = *ted; // beth 等于 ted 所指向的数值 ( 25 ) |
相关文章推荐
- &(取引用 reference)和*(解引用 dereference)在二维数组时候的使用
- C++引用报错:invalid initialization of non-const reference of type ‘std::string&’ from an rvalue of type
- C# 引用程序集 面向的是另一个处理器,而不是应用程序 警告 Referenced assembly 'TypeInfo.dll' targets a different processor than the application
- [C++语法] 引用(reference) Int& a
- 错误:_cspr_lp64_iface.c:(.text+0x28): undefined reference to `mkl_blas_cspr'类似未定义引用
- SCA概念与应用实践(7.SCA装配模型--7.6服务service & 7.7引用reference)
- Python入门的36个例子 之 23 -> Objects and References —— 复制引用还是复制实体对象
- C++ 参数传递 nonreference parameters & reference parameters 非引用和引用类型
- [置顶] (柯昌合)内存优化之"软引用" Strong, Soft, Weak, Phantom Reference(柯昌合)
- 命名空间‘xxxx'中不存在类型或命名空间名称"DBserviceReference"(是否缺少程序集引用?)
- <perl> 复杂数据结构 (Reference & Dereference)
- 内存优化之"软引用" Strong, Soft, Weak, Phantom Reference
- Values & Reference:值和引用
- 智能指针里弱引用应该如何实现?(WeakReference/WeakPtr<T>)
- PHP源码分析-变量的引用计数、写时复制(Reference counting & Copy-on-Write)
- C#中出现"System.NullReferenceException: 未将对象引用设置到对象的实例"
- shell 间接引用(indirect reference) \$${a} 和 ${!a}
- 错误:_cspr_lp64_iface.c:(.text+0x28): undefined reference to `mkl_blas_cspr'类似未定义引用 *转载
- 转屏对AsynTask的影响&WeakReference弱引用
- C++ Rvalue References Explained (c++右值引用详解)