Pointers 与 References(一),Pointers 与 References(一)
【 tulaoshi.com - C语言心得技巧 】
Pointers 与 References(一)
编译:肖德时
译者注:本文节选自《How to Think Like A Computer Scientist,Learning with C++》第16章,作者Allen B. Downey)。此书对于国内“初级”C++爱好者来说,是一本不可多得的入门书籍。我的这版是PALM电子书。
正文:
我认为最简单的方法解释Pointers 和 References就是举例证明了。首先让我们看一些表达式:
x=1;在表达式中,当你使用一个变量,特别是一个字母或标记符来存储数据。在编程过程中,上面等式中的变量一定是在等号的左边。
1=x;假如你不知道,你现在应该知道,并且理解它,这是最关键的。当你得到编译运行期错误,如:"lvalue requied in ..."是因为等号左边通常被当作lvalue的值,必须是内存中的一个地址。
SOMETYPE* sometype; int* x;对于声明一个reference,你做的事情是和声明一个指针完全一样的,仅仅这次你不使用星号*,使用—来替换。
SOMETYPE& sometype; int& x;可能你已经学过,空位在C++中是不被考虑的,所以以下的指针声明都是一样的效果:
SOMETYPE* sometype; SOMETYPE * sometype; SOMETYPE *sometype;以下的references声明同理也是一样:
SOMETYPE& sometype; SOMETYPE & sometype; SOMETYPE &sometype;16.3 “寻址”操作符
SOMETYPE* x = &sometype; //必须被当作 rvalue 使用。现在,不要把“寻址”操作符与声明一个reference搞混淆。因为使用此操作符被严格局限于rvalue,或是等号的右边。编译器知道
SOMETYPE MyFunc(SOMETYPE *x) { cout << *x << endl; } int main() { SOMETYPE i; MyFunc(&i); return 0; }......待续。
来源:http://www.tulaoshi.com/n/20160129/1485631.html
看过《Pointers 与 References(一)》的人还看了以下文章 更多>>