C和C++中指针与地址的区别
在C語言和C++中,指針是非常重要的一部分,程序的執(zhí)行過程中可以通過指針來找到要操作的數(shù)據(jù)和可執(zhí)行的函數(shù)代碼。很多人就明白指針和地址是有區(qū)別的,但是很少有人能說清楚這種區(qū)別。
指針總共可以分為兩種,函數(shù)指針和數(shù)據(jù)指針。而指針和地址最大的區(qū)別就是指針是有類型的,地址是沒有類型的。我們當(dāng)然可以通過絕對(duì)地址的方式找到函數(shù)和數(shù)據(jù),但是地址是沒有類型的,不能對(duì)地址進(jìn)行算術(shù)操作,在涉及諸如數(shù)組等操作時(shí)就不能通過地址的自增和自減來訪問數(shù)組的各個(gè)變量。但是通過對(duì)指針的引用,就可以通過對(duì)指針進(jìn)行一系列的加加減減操作很方便的訪問數(shù)組的各個(gè)元素。
所以,指針是由地址和類型兩部分構(gòu)成的,指向數(shù)據(jù)的指針不僅記錄該數(shù)據(jù)的在內(nèi)存中的存放的地址,還記錄該數(shù)據(jù)的類型,即在內(nèi)存中占用幾個(gè)字節(jié),這是地址所不具有的。指向函數(shù)的指針不僅記錄函數(shù)的入口地址,也記錄該函數(shù)的類型,即函數(shù)的返回值類型和該函數(shù)的參數(shù)類型。
????? 在C++中還有一種特殊的數(shù)據(jù)類型,那就是對(duì)象,這是一種用戶自定義的數(shù)據(jù)類型。它即包含了數(shù)據(jù),又包含了函數(shù)。但是在同一個(gè)類模板聲明的對(duì)象變量各自擁有一份數(shù)據(jù)成員,卻共享一份函數(shù)成員,因?yàn)閷?duì)有共同類模板的對(duì)象來說,他們的數(shù)據(jù)成員可能不同,但是他們的用來處理數(shù)據(jù)的函數(shù)代碼確是相同的,所以他們共享一份成員函數(shù)。而此時(shí),對(duì)象的指針指向的各自的數(shù)據(jù)成員。
????? 指針的使用一定要特別小心,千萬不能越界,否則會(huì)出現(xiàn)意想不到的結(jié)果。而且一定不要使用未初始化過的指針,這樣將會(huì)訪問到位置的內(nèi)存,有可能會(huì)給操作系統(tǒng)帶來毀滅性的災(zāi)難,雖然健壯的操作系統(tǒng)一般不會(huì)允許這么做。
轉(zhuǎn)載于:https://www.cnblogs.com/chenchenluo/archive/2011/09/27/2193267.html
總結(jié)
以上是生活随笔為你收集整理的C和C++中指针与地址的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql 使用存储过程传递列名或表名作为参
- 下一篇: [zz]Spring MVC 之 Sim