c語言靜態(tài)變量和動(dòng)態(tài)變量的區(qū)別 c語言再申明了結(jié)構(gòu)體變量指針后為什么還要給指針動(dòng)態(tài)分配存儲(chǔ)單元?
c語言再申明了結(jié)構(gòu)體變量指針后為什么還要給指針動(dòng)態(tài)分配存儲(chǔ)單元?a int b}*a//前面的代碼只定義了一個(gè)未初始化的結(jié)構(gòu)指針。它可能指向空地址或其他未知地址。此時(shí),直接操作指針是操作指針指向的內(nèi)存
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ò)誤