Pointers 与 References(二)

2016-01-29 12:20 2 1 收藏

Pointers 与 References(二),Pointers 与 References(二)

【 tulaoshi.com - C语言心得技巧 】

Pointers 与 References(二)


编译:肖德时

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

     第一部分

16.4 赋值pointers和references.

    就像你看到使用“寻址”操作符的语法一样,一个指针被赋值得到“寻址”操作符的返回值。因为“寻址”操作符的返回值就是一个指针,所有事情
都考虑过了,你的代码应该通过编译。对于赋值给一个指针,它必须在内存中得到一个地址,不然编译器将给你提示错误。

      int x;      int* px = &x;      
    上面一段代码说明了被声明为int类型的变量x,一个被声明为指针的变量并给赋值内存中x的地址。指针px实际上通过存储在内存中x的地址“指向”x。记住当声明一个指针时,需要同类型的指针在你所在地址中充当变量或常量。
    现在这里你开始明白指针和references的不同了。赋值一个指针给内存中的地址,你不得不使用“寻址”操作符来返回指针变量在内存中的地址。
    而一个references,不管怎样,都不需要使用“寻址”操作符赋值成内存中的地址。赋值一个地址给一个reference,你只需要使用变量充当rvalue值就行。
      int x;      int& rx=x;      
    上面代码显示类型int的变量x被声明,然后reference rx也被声明,并且被赋值“充当”x。注意不管x的地址是怎样存储在rx中,或者说通过rx“被参考”,不必使用其他操作符,仅是变量。在你遇到必须声明同类型reference作为变量或常量的情况,你也必须遵循此类方法来充当指针。
    有可能,你想知道一个指针能显示什么内容,就像这样:
#include <iostream.hint main(){   int someNumber = 12345;   int* ptrSomeNumber = &someNumber;   cout << "someNumber=" << &someNumber <<endl;   cout << "ptrSomeNumber=" << prtSomeNumber <<endl;   return 0;}      
    假如你编译并运行此代码,你应该会得到变量someNumber输出12345,ptrSomeNumber将输出一个十六进制数(内存中地址都是以十六进制被实现的。)现在,如果你想输出prtSomeNumber所指的值,你应该使用这些代码:
#include <iostream.hint main(){   int someNumber = 12345;   int* ptrSomeNumber = &someNumber;   cout << "someNumber=" << &someNumber <<endl;   cout << "ptrSomeNumber points to " << *prtSomeNumber <<endl;   return 0;}      
    所以从原理上来说,当你想使用、修改或操作指针x所指的值,你就可以使用*x来充当此值或变量。
    这里有一个指针和referenceds能做的事的速查列表: 你能赋值指针来“指向”内存中的地址。 你能赋值reference来“充当”变量或常量。 你能复制指针值给其他指针。 你能分别修改指针或references所指或充当的,在内存中存储的值。 你能对指针所指地址作递增或递减的操作。 你能传递指针和references给函数(更多信息见“通过reference传递”中可找到)。 ......待续。

来源:https://www.tulaoshi.com/n/20160129/1485643.html

延伸阅读
标签: PHP
  PHP与SQL注入攻击[二] Magic Quotes 上文提到,SQL注入主要是提交不安全的数据给数据库来达到攻击目的。为了防止SQL注 入攻击,PHP自带一个功能可以对输入的字符串进行处理,可以在较底层对输入进行安全 上的初步处理,也即Magic Quotes。(php.ini magic_quotes_gpc)。如果magic_quotes_gpc 选项启用,那么输入的字符串中的单引号,...
标签: InDesign
2.我想排两本相同内容开本不同的书籍,应该怎么办? 答:在InDesign中是很容易实现的。方法是: 1)首先打开已经制作好的文件; 2)选择菜单:版面-版面调整 3)在对话框中选择“启用版面调整”命令框,点“好”。 4)选择菜单:文件-文档设置 5)按照你的需要,修改页面尺寸。 6)此时你...
标签: Delphi
  12.3 异常响应 异常响应为开发者提供了一个按自己的需要进行异常处理的机制。 try … except … end 形成了一个异常响应保护块。与 finally 不同的是:正常情况下 except 后面的语句并不被执行,而当异常发生时程序自动跳到 except ,进入异常响应处理模块。当异常被响应后异常类自动清除。 下面的例子表示了文件打开...
标签: 二月二 春饼
二月二吃春饼 春饼的做法与讲究 普通人家在这一天要吃面条、春饼、爆玉米花、猪头肉等,不同地域有不同的吃食,但大都与龙有关,普遍把食品名称加上“龙”的头衔,如吃水饺叫吃“龙耳”;吃春饼叫吃“龙鳞”;吃面条叫吃“龙须”;吃米饭叫吃“龙子”;吃馄饨叫吃“龙眼&r...

经验教程

120

收藏

19
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部