靜態(tài)指針和動(dòng)態(tài)指針 如何使用指針來存取數(shù)據(jù)?
如何使用指針來存取數(shù)據(jù)?指針類型是動(dòng)態(tài)的,可以按指針地址作為任何類型。程序,動(dòng)態(tài)訪問指針數(shù)據(jù)類型,應(yīng)該說沒有實(shí)際意義。在確認(rèn)指針安全的情況下,可以通過重載模板函數(shù)動(dòng)態(tài)獲取指針類型。其實(shí)就是創(chuàng)建幾個(gè)同名
如何使用指針來存取數(shù)據(jù)?
指針類型是動(dòng)態(tài)的,可以按指針地址作為任何類型。
程序,動(dòng)態(tài)訪問指針數(shù)據(jù)類型,應(yīng)該說沒有實(shí)際意義。在確認(rèn)指針安全的情況下,可以通過重載模板函數(shù)動(dòng)態(tài)獲取指針類型。
其實(shí)就是創(chuàng)建幾個(gè)同名不同參數(shù)類型的函數(shù),返回指定的值:
int datatype(int){return 4}
int datatype(char){return 1}
int datatype(double){return 3}
調(diào)用時(shí),
int dtype=datatype(*P)]。
c語言再申明了結(jié)構(gòu)體變量指針后為什么還要給指針動(dòng)態(tài)分配存儲(chǔ)單元?
a int b}*a//前面的代碼只定義了一個(gè)未初始化的結(jié)構(gòu)指針。它可能指向空地址或其他未知地址。此時(shí),直接操作指針是操作指針指向的內(nèi)存。此內(nèi)存只能在系統(tǒng)區(qū)域中,也可以在常量區(qū)域中。無論如何,這是內(nèi)存,這個(gè)程序不應(yīng)該訪問,所以內(nèi)存錯(cuò)誤發(fā)生。
指針只能在為指針分配空間后用于分配空間。一種是定義這樣一個(gè)結(jié)構(gòu)變量,然后將指針指向它的地址。另一種是手動(dòng)malloc一個(gè)區(qū)域來分配空間,然后執(zhí)行指針操作,這樣就不會(huì)出現(xiàn)這樣的內(nèi)存錯(cuò)誤