程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> Pointers與References(二)

Pointers與References(二)

編輯:關於VC++

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.h>
int main()
{
int someNumber = 12345;
int* ptrSomeNumber = &someNumber;
cout << "someNumber=" << &someNumber <<endl;
cout << "ptrSomeNumber=" << prtSomeNumber <<endl;
return 0;
}

假如你編譯並運行此代碼,你應該會得到變量someNumber輸出 12345,ptrSomeNumber將輸出一個十六進制數(內存中地址都是以十六進制被實現的。)現在 ,如果你想輸出prtSomeNumber所指的值,你應該使用這些代碼:

#include <iostream.h>
int 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傳遞”中可 找到)。

......待續。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved