在C中函數(shù)指針有什么作用呢,為什么不直接調(diào)用函數(shù)而要使用函數(shù)指針?
,唉!我還沒有t摸C好幾年了,這個(gè)問題激起很多感觸!看起來,回答問題的人全是程的專家。告訴我我還記得什么。如果我錯(cuò)了,請(qǐng)?jiān)徫摇.吘梗疫€沒有幾年不讀書。
指針是C語(yǔ)言中最難學(xué)的概念,也成了別有用心的人反對(duì)C語(yǔ)言的靶子。
其實(shí)指針是一個(gè)特殊的變量,它指向存儲(chǔ)其他變量的地址,在調(diào)用函數(shù)時(shí)作為索引,將函數(shù)名作為函數(shù)本身。
指針占用內(nèi)存很少,就像C語(yǔ)言中的輕騎兵。
在繼承和繼承自定義類時(shí),使用虛函數(shù)的指針可以根據(jù)上下文自動(dòng)判斷和改變指針?biāo)赶虻母割惢蜃宇悓?duì)象。
程序調(diào)用完成后應(yīng)及時(shí)撤銷指針,避免內(nèi)存泄漏。
函數(shù)指針變量存儲(chǔ)在內(nèi)存什么區(qū)?
函數(shù)指針變量存儲(chǔ)在靜態(tài)數(shù)據(jù)區(qū)。
C語(yǔ)言的變量值是通過對(duì)變量的內(nèi)存地址進(jìn)行尋址得到的,但對(duì)于編譯后的程序來說,變量的地址是一個(gè)確定的值,不能改變。
這是因?yàn)榫幾g器在編譯程序時(shí)已經(jīng)通過語(yǔ)法分析計(jì)算出了指針變量的地址值,所以指針變量實(shí)際上并不需要存儲(chǔ)在內(nèi)存堆棧或數(shù)據(jù)段中。而普通變量在數(shù)據(jù)段。
為什么函數(shù)指針只能指向void?
因?yàn)関oid*函數(shù)指針可以指向任何函數(shù)。
因此,void*指針是一個(gè)"通用指針。
空型是一種特殊的類型,通常稱為"空類型"。C語(yǔ)言中沒有void類型的變量,所以當(dāng)遇到void*指針時(shí),編譯器不會(huì)我根本不知道如何解釋下一個(gè)內(nèi)存,甚至編譯器也不知道。;我不知道有多少記憶屬于它。
指針函數(shù)的用法?指針是C語(yǔ)言中的一個(gè)重要概念及其特點(diǎn),也是C語(yǔ)言中較難掌握的部分。指針也是內(nèi)存地址。指針變量是用來存儲(chǔ)內(nèi)存地址的變量。不同類型的指針變量占用相同長(zhǎng)度的存儲(chǔ)單元,而存儲(chǔ)數(shù)據(jù)的變量由于數(shù)據(jù)類型不同,占用不同長(zhǎng)度的存儲(chǔ)空間。使用指針,不僅可以操作數(shù)據(jù)本身,還可以操作存儲(chǔ)數(shù)據(jù)的變量地址。
指針的注意事項(xiàng):
1.你可以不要用指針指向數(shù)字。指針只能指向變量的地址。
比如給指針p賦值500,就會(huì)出現(xiàn)運(yùn)算錯(cuò)誤;我們要定義一個(gè)整型變量A,給A賦值500,然后用指針指向變量A的地址,所以需要用amp地址運(yùn)算符。
兩個(gè)都可以。
2.改變形式參數(shù)并不意味著改變真實(shí)參數(shù)。
您不能試圖通過更改finger參數(shù)的值來更改pointer參數(shù)的值。