python開發(fā)安卓app優(yōu)缺點 學(xué)習(xí)c語言的時候指針應(yīng)該怎么理解?
學(xué)習(xí)c語言的時候指針應(yīng)該怎么理解?簡單的說,指針就是一個代表地址的無符號整數(shù)。通常我們使用指針,是為了讀取或改變指針指向的數(shù)據(jù)。所以,單獨理解指針是不夠的。還得了解指針指向的數(shù)據(jù)空間是如何安排的。這有
學(xué)習(xí)c語言的時候指針應(yīng)該怎么理解?
簡單的說,指針就是一個代表地址的無符號整數(shù)。
通常我們使用指針,是為了讀取或改變指針指向的數(shù)據(jù)。
所以,單獨理解指針是不夠的。還得了解指針指向的數(shù)據(jù)空間是如何安排的。這有可能會涉及到與具體CPU/OS相關(guān)的一些知識。如果能結(jié)合計算機體系結(jié)構(gòu)知識一起理解會更深入、更準確。
比如:
各種整數(shù)(signed/unsigned long/int/short)是如何存放的?
各種浮點數(shù)(float/double/long double)是如何存放的?
數(shù)組在數(shù)據(jù)空間中是如何組織的?
字符串是如何存放的?
結(jié)構(gòu)(struct)和聯(lián)合(union)是如何存放的?
位域(bit field)的組織
這其中和具體CPU相關(guān)的部分通常有:
結(jié)構(gòu)(struct)和聯(lián)合(union)的對齊,通常會以CPU字長對齊
整數(shù)的存放,會涉及CPU大小端的規(guī)定
浮點數(shù)的存放,和FPU的設(shè)計直接相關(guān)
再進一步,還有一些擴展知識,涉及內(nèi)存的分配和釋放:
程序中如何分配內(nèi)存?(malloc/free)
堆(heap)和棧(stack)各是什么?
小結(jié)一下:指針就是地址,也是一個整數(shù)。但要用好它,需要了解計算機存儲空間的分配規(guī)律,難點在這里,突破點也在這里。