第四章
指针 pointer(高级)
希望初学者在入门的时候,可以看一些英文的原著,我感觉英文书籍是原意,而一些现在中文的翻译是加上了译者的一些理解,多少是拿来的东西,所以一些东西我希望能够按照自己的来。
&A 就是取存放A的位置,我们可以将这个位置复制给pointer variable。
*A 从A所指的位置中“提取数值”
接上回,首先取个例子:
Algorithm findBigger(x, y)
Pre: x, y :: refToInteger are valid references
Post: no change to data
Return: the reference to the larger of *x, *y
refToInteger temp
if (*x ≥ *y)
temp ← x
else
temp ← y
end if
return temp
值得注意的是,在这里的x和y是指两个address,我们可以从这两串数字中读取到它所指的数值。当给一个pointer temp赋值时,我们输入这个pointer的值就是x的address。
在C++的实例中就是如此:
int *findBigger(int *x, int *y){
int *temp;
if (*x >= *y)
temp = x;
else
temp = y;
return temp;
}
这时候,temp所存放的就是地址。
Algorithm swap(a, b)
Pre: a :: refToInteger
b :: refToInteger
a, b contain valid references
Post: the contents of *a and *b
are exchanged
Integer temp ← *a
*a ← *b
*b ← temp
下回,我将会讲内存和指针的运用