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