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