C學習筆記

來源:互聯網
上載者:User

標籤:ar   io   使用   sp   on   資料   問題   bs   ad   

1、struct

struct 是一種複合資料型別,其構成元素可以是一些複合資料型別,如array,struct,union,預設情況下,編譯器為結構體的每個成員按其自然對齊(預設對齊,按照結構體成員中size最大的成員對齊)分配空間,第一個成員和整個結構體地址相同。

使用偽指令#pragma pack(n),編譯器將按照n個位元組對齊,若n大於結構體中最大成員size,則結構體扔按照size最大的成員進行對齊。

2、static關鍵字的作用

在函數體內,一個被聲明為靜態變數在這一函數被調用過程中維持其值不變

在模組內函數體外,一個被聲明為靜態變數可以被模組內所有函數訪問,不能被模組外其他函數訪問,是一個本地的全域變數

在模組內,一個被聲明為靜態函數只可被這一個模組的其他函數調用

3、const關鍵字的含義

4、volatile有什麼含義

一個volatile修飾的變數可能被意想不到的改變,因此每次訪問都重新讀取這個變數的值,而不是使用儲存在寄存器裡的備份。例如平行裝置的硬體寄存器、一個中斷服務子程式中會訪問到的非自動變數、多線程應用中被幾個任務共用的變數

2、c高效編程

   第一招:以空間換時間,例如函數調用需要壓棧和出棧操作,如果換成宏,雖然佔用了大量的空間,但消耗的cpu時間減少了

   第二招:數學方法解決問題,例如:I=(100*(1+100))/2 (求1~100的和)

   第三招:使用位操作,例如:j = 456%32操作可以替換為:j = 456 - (456>>4<<4);

   第四招:彙編嵌入

備忘:

1、置位操作函數:

#define bwMCDR2_ADDRESS 4

#define bsMCDR2_ADDRESS 17

#define bmMCDR2_ADDRESS BIT_MASK(MCDR2_ADDRESS)

#define BIT_MASK(_bf)(((1U<<(bw##_bf))-1)<<(bs##_bf)

#define SET_BITS(_dst,_bf,_val) ((_dst)=((_dst)&~(BIT_MASK(_bf)))|(((_val)<<(bs##_bf)&BIT_MASK(_bf))))

SET_BITS(MCDR2,MCDR2_ADDRESS,RegisterNumber)

C學習筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.