資料介紹
指針對于C來說太重要!然而,想要全面理解指針,除了要對C語言有熟練的掌握外,還要有計(jì)算機(jī)硬件以及操作系統(tǒng)等方方面面的基本知識,所以本文盡可能的通過一篇文章完全講解指針。
為什么需要指針?
指針解決了一些編程中基本的問題。
第一,指針的使用使得不同區(qū)域的代碼可以輕易的共享內(nèi)存數(shù)據(jù)。
當(dāng)然小伙伴們也可以通過數(shù)據(jù)的復(fù)制達(dá)到相同的效果,但是這樣往往效率不太好。
因?yàn)橹T如結(jié)構(gòu)體等大型數(shù)據(jù),占用的字節(jié)數(shù)多,復(fù)制很消耗性能。
但使用指針就可以很好的避免這個問題,因?yàn)槿魏晤愋偷闹羔樥加玫淖止?jié)數(shù)都是一樣的(根據(jù)平臺不同,有4字節(jié)或者8字節(jié)或者其他可能)。
第二,指針使得一些復(fù)雜的鏈接性的數(shù)據(jù)結(jié)構(gòu)的構(gòu)建成為可能,比如鏈表,鏈?zhǔn)蕉鏄涞鹊取?
第三,有些操作必須使用指針。如操作申請的堆內(nèi)存。
還有:C語言中的一切函數(shù)調(diào)用中,值傳遞都是“按值傳遞”的。
如果我們要在函數(shù)中修改被傳遞過來的對象,就必須通過這個對象的指針來完成。
計(jì)算機(jī)是如何從內(nèi)存中進(jìn)行取指的?
計(jì)算機(jī)的總線可以分為3種:數(shù)據(jù)總線,地址總線和控制總線。這里不對控制總線進(jìn)行描述。
數(shù)據(jù)總線用于進(jìn)行數(shù)據(jù)信息傳送。數(shù)據(jù)總線的位數(shù)一般與CPU的字長一致。
一般而言,數(shù)據(jù)總線的位數(shù)跟當(dāng)前機(jī)器int值的長度相等。
例如在16位機(jī)器上,int的長度是16bit,32位機(jī)器則是32bit。這個計(jì)算機(jī)一條指令最多能夠讀取或者存取的數(shù)據(jù)長度。大于這個值,計(jì)算機(jī)將進(jìn)行多次訪問。
這也就是我們說的64位機(jī)器進(jìn)行64位數(shù)據(jù)運(yùn)算的效率比32位要高的原因,因?yàn)?2位機(jī)要進(jìn)行兩次取指和運(yùn)行,而64位機(jī)卻只需要一次!
地址總線專門用于尋址,CPU通過該地址進(jìn)行數(shù)據(jù)的訪問,然后把處于該地址處的數(shù)據(jù)通過數(shù)據(jù)總線進(jìn)行傳送,傳送的長度就是數(shù)據(jù)總線的位數(shù)。
地址總線的位數(shù)決定了CPU可直接尋址的內(nèi)存空間大小,比如CPU總線長32位,其最大的直接尋址空間長232KB,也就是4G。
這也就是我們常說的32位CPU最大支持的內(nèi)存上限為4G(當(dāng)然,實(shí)際上支持不到這個值,因?yàn)橐徊糠謱ぶ房臻g會被映射到外部的一些IO設(shè)備和虛擬內(nèi)存上。 現(xiàn)在通過一些新的技術(shù),可以使32位機(jī)支持4G以上內(nèi)存,但這個不在這里的討論范 圍內(nèi))。
一般而言,計(jì)算機(jī)的地址總線和數(shù)據(jù)總線的寬度是一樣的,我們說32位的CPU,數(shù)據(jù)總線和地址總線的寬度都是32位。
計(jì)算機(jī)訪問某個數(shù)據(jù)的時(shí)候,首先要通過地址總線傳送數(shù)據(jù)存儲或者讀取的位置,然后在通過數(shù)據(jù)總線傳送需要存儲或者讀取的數(shù)據(jù)。
一般地,int整型的位數(shù)等于數(shù)據(jù)總線的寬度,指針的位數(shù)等于地址總線的寬度。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- C語言程序設(shè)計(jì)教程第4版第8講:指針 0次下載
- C語言程序設(shè)計(jì)第四講結(jié)構(gòu)化程序設(shè)計(jì)之選擇 0次下載
- 使用PG12864LCD設(shè)計(jì)的指針式電子鐘C語言程序免費(fèi)下載 50次下載
- MATLAB語言與C語言的區(qū)別資料下載
- C語言指針與指針變量的簡介和運(yùn)算實(shí)例程序免費(fèi)下載 14次下載
- C語言中的指針到底是什么?詳細(xì)資料介紹和使用代碼免費(fèi)下載
- C語言指針的三個問題的詳細(xì)資料說明
- 如何輕松理解C語言指針的詳細(xì)資料說明 11次下載
- 輕松理解C語言指針的實(shí)驗(yàn)和詳細(xì)資料說明 10次下載
- C語言教程之指針的詳細(xì)資料說明 9次下載
- C語言程序設(shè)計(jì)教程之指針使用的課件免費(fèi)下載 15次下載
- 如何學(xué)習(xí)c語言?C語言學(xué)習(xí)筆記資料免費(fèi)下載 66次下載
- C語言編程和指針的學(xué)習(xí)詳細(xì)資料概述 84次下載
- C語言的精髓——指針詳解 17次下載
- C語言指針電子教程 77次下載
- C語言指針學(xué)習(xí)筆記 273次閱讀
- C語言指針運(yùn)算符詳解 286次閱讀
- 詳解C語言指針底層基本原理 1298次閱讀
- 什么是C語言(void*)類型 3382次閱讀
- 淺談指針常量和常量指針 1097次閱讀
- C語言中的懸空指針和野指針是什么意思? 1126次閱讀
- C語言中指針的命令行參數(shù) 1173次閱讀
- C語言指針和數(shù)組的區(qū)別 1953次閱讀
- C語言指針相關(guān)的概念、語法及使用場景 2019次閱讀
- C語言中的“二級指針”該如何理解 1.2w次閱讀
- 指針和數(shù)組都是C語言的精髓所在 兩者有何聯(lián)系區(qū)別 4187次閱讀
- 嵌入式開發(fā)之C語言的指針 3248次閱讀
- 為什么C語言要引入指針_引入指針的好處是什么 2.2w次閱讀
- C語言使用中指針和內(nèi)存泄漏的問題和解決方案 4202次閱讀
- 基于C語言中指針的基本用法解析 4816次閱讀
下載排行
本周
- 1DC電源插座圖紙
- 0.67 MB | 3次下載 | 免費(fèi)
- 2AN-1267: 使用ADSP-CM408F ADC控制器的電機(jī)控制反饋采樣時(shí)序
- 1.41MB | 3次下載 | 免費(fèi)
- 3AN158 GD32VW553 Wi-Fi開發(fā)指南
- 1.51MB | 2次下載 | 免費(fèi)
- 4AN148 GD32VW553射頻硬件開發(fā)指南
- 2.07MB | 1次下載 | 免費(fèi)
- 5AN111-LTC3219用戶指南
- 84.32KB | 次下載 | 免費(fèi)
- 6AN153-用于電源系統(tǒng)管理的Linduino
- 1.38MB | 次下載 | 免費(fèi)
- 7AN-283: Σ-Δ型ADC和DAC[中文版]
- 677.86KB | 次下載 | 免費(fèi)
- 8SM2018E 支持可控硅調(diào)光線性恒流控制芯片
- 402.24 KB | 次下載 | 免費(fèi)
本月
- 1ADI高性能電源管理解決方案
- 2.43 MB | 450次下載 | 免費(fèi)
- 2免費(fèi)開源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 138次下載 | 1 積分
- 3基于STM32單片機(jī)智能手環(huán)心率計(jì)步器體溫顯示設(shè)計(jì)
- 0.10 MB | 130次下載 | 免費(fèi)
- 4使用單片機(jī)實(shí)現(xiàn)七人表決器的程序和仿真資料免費(fèi)下載
- 2.96 MB | 44次下載 | 免費(fèi)
- 5美的電磁爐維修手冊大全
- 1.56 MB | 24次下載 | 5 積分
- 6如何正確測試電源的紋波
- 0.36 MB | 18次下載 | 免費(fèi)
- 7感應(yīng)筆電路圖
- 0.06 MB | 10次下載 | 免費(fèi)
- 8萬用表UT58A原理圖
- 0.09 MB | 9次下載 | 5 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935121次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191367次下載 | 10 積分
- 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73810次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論