复杂的数据类型3 - C++快速入门09
生活随笔
收集整理的這篇文章主要介紹了
复杂的数据类型3 - C++快速入门09
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
復雜的數據類型3
?讓編程改變世界
Change the world by program
?
“走后門” —— 利用指針改變值
?溫故而知新:
創建變量時,系統將分配一些內存塊用來保存它們的值; 每個內存塊擁有一個獨一無二的地址; 變量的地址可以用 &variablename 語法來取得;(注:& 我們稱為 ”取地址” 操作符) 可以把地址賦值給一種稱為指針的特殊變量; 指針的類型必須與由它保存其地址的變量的類型一致。 ?接下來給大家介紹點真正的好東西:
int a = 456;
char b = ‘C’;
int *aPointer = &a;
Char *bPointer = &b;
? 這會讓程序保留4個內存塊,兩個為變量保留,兩個為指針保留。 變量a 和變量b 里邊存放的是變量的值; 兩個指針變量存放著指針的值,這些值是其他變量的地址。 [caption id="attachment_455" align="aligncenter" width="300"] 指針[/caption] ? 當我們知道了某個變量在內存中的地址(通過指針),就可以利用指針訪問位于該地址的數據。 這需要對指針進行 ”解引用(Deference)”處理:即在指針名的前面加上一個星號(*)。 如: std::cout << *aPointer; ? 這里我們來理解一下:把整數變量 a 的地址存儲在 aPointer 指針里之后,*aPointer 和變量 a 將代表同一個值。 因此: *aPointer = 123; 將會 = >> [caption id="attachment_456" align="aligncenter" width="300"] 指針[/caption] ?課堂實例解析
Pointer.cpp (源代碼下載) ?課后思考
?1. 一定要牢記的事實:指針所保存的是內存中的一個地址。它并不保存指向的數據的值本身。
因此,務必確保指針對應一個已經存在的變量或者一塊已經分配了的內存。 ?2. 星號有兩種用途,時常困惑了初學者:
第一種是用于創建指針:[ex] int *myPointer = &myInt;
第二種是對指針進行解引用:[ex] *myPointer = 3998;
?3. C++ 允許指針群 P,就是多個指針有同樣的值
int *p1 = &myInt;
int *p2 = &myInt;
?4. C++ 支持無類型(void)指針,就是沒有被聲明為某種特定類型的指針,例如:
void *vPointer;
注意:對一個無類型指針進行解引用前,必須先把它轉換為一種適當的數據類型。(日詳) [buy]?獲得所有教學視頻、課件、源代碼等資源打包?[/buy] [Downlink href='http://urlxf.qq.com/?BRniQzM']視頻下載[/Downlink] [Downlink href='http://kuai.xunlei.com/d/LNESZACKRUNE']備胎下載[/Downlink]轉載于:https://www.cnblogs.com/LoveFishC/archive/2011/11/24/3846161.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的复杂的数据类型3 - C++快速入门09的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iframe 的一点经历
- 下一篇: s3c2440移植MQTT