1. 程式人生 > >嵌入式之經典知識點(五)

嵌入式之經典知識點(五)

1.用預處理指令#define宣告一個常數,用以表明一年中有多少秒

#define SECOND_YEAR  (60*60*24*365)UL

#define中的資料一般規定為整型,申明UL,更規範一點。

2.嵌入式系統中經常具有要求程式設計師去訪問某特定的記憶體位置的特點。在某工程中,要求設定一絕對地址為0x67a9的整型變數為0xaa66.

:為了訪問一個絕對地址,可以把一個整型數強制轉換為一指標

int *ptr=(int *)0x67a9

*ptr=0xaa55;

3.為什麼要記憶體對齊:

(1)平臺原因(移植原因):不是所有的硬體平臺都能訪問任意地址上的任意資料

(2)效能原因:資料結構(尤其是棧)應該儘可能地在自然邊界上對齊,因為為了訪問未對齊的記憶體,處理器需要做兩次記憶體訪問,而對齊的記憶體僅需要訪問一次

4.int *p 和char *p分別佔幾個位元組?

都是佔4個位元組,因為兩者都是指標變數,儲存的是地址。地址在作業系統中是固定長度,作業系統32位,長度為4個位元組,作業系統64位,長度為8個位元組。

5.sizeof和strlen

sizeof:是運算子,在程式預編譯階段就執行了,統計字串長度時計入'\0'

strlen:是函式,統計字串長度不計入'\0'