# 【知識精講】地址與取地址符
## Part1
在之前學習變量的概念的時候,小渡曾經讓你把變量想象成一個盒子,每個變量就像是盒子一樣,里面可以裝上東西。不同類型的變量,就對應了可以裝不同類型東西的盒子(以后你會知道,這“盒子”的實質是內存的空間)。
除了類型之外,變量還有一個屬性叫做**地址**,你可以認為這是一種貼在盒子上的數字標簽。如果你把這個地址給到你的好朋友小明,小明就可以用這個地址來找到“貼著對應標簽的盒子”——對應的變量。
## Part2
這里我們需要向大家介紹一個運算符`&`,它叫做**取地址符**。對于某一個 X 類型(這里的 X 可以是 `int`、`float` 或者其它的類型)的變量 `a`,當我們寫`a`時,我們得到的是變量 `a` 中存儲的 X 類型的值(也就是盒子里裝的那個東西),而如果我們寫`&a`則會得到變量 `a` 現在存儲位置的地址值(也就是盒子上貼的那個標簽)。
然而,在 C++ 語言中地址值也可以被認為是一種特殊類型的值。C++ 語言中也設計了專門類型的變量來對地址值進行儲存。
## Part3
我們聲明一個可以存儲整數型值的變量 `a` 會寫成`int a;`,而如果我們希望有一個變量 `p`,讓它可以儲存整數型值變量的地址值時,我們則需要寫成`int *p`。
當我們有一個這樣的變量 `p` 以后,我們可以將一個整數型變量 `a` 的地址放到 `p` 里面。這個過程可以通過將變量 `p` 賦值成“取變量 `a` 的地址”的形式來完成——`p = &a;`。
[](http://res.jisuanke.com/img/upload/20160111/2f3e98429f8aa093896072e8badde92fc136eb7f.png)
## Part4
類似地,我們可以通過`float *q`聲明一個變量,來存儲浮點數類型變量`float x;`的地址值。我們也可以通過`unsigned int *h`聲明一個變量,來存儲無符號整數類型變量`unsigned int y;`的地址值。
聰明的你應該發現了,將 `*` 標記加在類型之后標記的變量,是用于存儲地址值而不是普通的數值的。
好好回想一下“變量”、“變量的值”、“變量的地址”、“特殊的用于存儲地址的變量”這些不同的概念。想想小渡給你說的“盒子”的比喻,是不是理解得更清楚了呢?
- 教材介紹
- 《編程初學入門常識》
- 什么是程序語言
- 【知識精講】編程與編程語言
- 【選擇測試】編程語言分類
- 【知識精講】高級語言分類
- 【選擇測試】編譯與解釋
- 【選擇測試】程序員笑話-Java
- 熟悉鍵盤上用于編程的鍵位
- 【知識精講】認識你的鍵盤
- 【知識精講】中文和英文字符
- 【匹配測試】識別中英文符號
- 【選擇測試】中英文符號的影響
- 【伴隨編程】不要使用中文引號
- 【伴隨編程】不要使用中文分號
- 【伴隨編程】正確地輸入符號
- 【選擇測試】找出程序中的錯誤
- 初始工程師思維
- 【知識精講】二進制思想
- 【選擇測試】程序員笑話-湊整
- 【知識精講】閉合的邏輯
- 【選擇測試】程序員笑話-條件
- 程序員職業與生活
- 【知識精講】程序員的發展方向
- 【知識精講】程序員的裝備
- 【知識精講】程序員的健康
- 【選擇測試】做一名健康的程序員
- 《C++程序設計》
- 前言
- 【知識精講】編程與計算機科學
- 【知識精講】編程與軟件工程
- 【知識精講】如何學習編程
- 你好C++
- 【知識精講】你好,C++
- 【知識精講】C++程序是如何開發的
- 【知識精講】成為一名Power User
- 【伴隨編程】讓我們一起說你好
- 【知識精講】你的第一個C++語言程序
- 【伴隨命令】編譯、運行你的程序
- 【伴隨編程】將變量流式輸出
- 【選擇測試】變量的作用域
- 【知識精講】變量與數據類型
- 【匹配測試】C++語言的入門概念
- 【知識精講】在程序中學會換行
- 【選擇測試】正確地換行
- 簡單數學運算
- 【知識精講】重新認識基本運算
- 【選擇測試】運算符的理解
- 【伴隨編程】做一下簡單的運算
- 【伴隨編程】a 的 n 次方
- 【知識精講】數學函數
- 【伴隨編程】讓C++語言變成計算器
- 【伴隨編程】計算球的體積
- 【匹配測試】數學世界知多少
- 【知識精講】在程序中添加注釋
- 【選擇測試】正確地寫注釋
- 從伴隨輸入到變量地址
- 【伴隨編程】 一個數字復讀機器
- 【選擇測試】理解標準輸入輸出
- 【伴隨編程】一個加法計算器
- 【程序設計】A+B+C問題
- 【伴隨編程】簡單的I/O格式控制
- 【知識精講】地址與取地址符
- 【伴隨編程】看看我們的地址
- 習題一:面積與周長
- 【程序設計】矩形面積與周長
- 【程序設計】三角形面積與周長
- 【程序設計】圓形面積與周長
- 程序中的是與非
- 【知識精講】是非的表示與關系運算
- 【伴隨編程】驗一驗關系運算式
- 【選擇測試】關系運算式求值
- 【知識精講】如果的意義
- 【伴隨編程】分段函數求值
- 【知識精講】如果之后的如果
- 【伴隨編程】五則運算器
- 【選擇測試】分支的嵌套
- 【伴隨編程】問號表達式
- 【知識精講】是非之間的邏輯組合
- 【伴隨編程】判斷閏年
- 【程序設計】日期合法性
- 【知識精講】多路順序結構
- 【知識精講】在程序中學會縮進
- 【選擇測試】正確的縮進
- C++程序中的苦力
- 【知識精講】使用循環結構
- 【選擇測試】對比兩種循環
- 【伴隨編程】使用while循環
- 【填空測試】理解循環結構
- 【知識精講】自減和自增運算符
- 【伴隨編程】使用自增運算符
- 【知識精講】for循環
- 【選擇測試】for循環的使用
- 【程序設計】一大波好玩兒的程序
- 《代碼能力快速提升》
- 《基礎數據結構》
- 《搜索入門》
- 《動態規劃基礎》
- 《數論和基礎數學》
- 《圖和數基礎》