C C 學習筆記(一)

2021-07-09 13:01:46 字數 1124 閱讀 7943

一、c++層次**的優化: 

1、無符號型別應用於:除法和餘數,迴圈計算,陣列下標; 帶符號型別應用於:整型到浮點的轉化。

2、while與for的比較:for比while編譯後指令少,不占用編譯器且無需跳轉。

3、陣列與指標:指標能訪問任意位置,當不必要訪問時用陣列可優化**,提高穩定性。

4、小迴圈完全展開。

5、避免沒必要的讀寫依賴。(引入臨時變數)

7、確定浮點型變數及表示式是float型,預設情況是double型,只有宣告後才是float型。(如:3.14f)

8、switch的用法:推薦按case值發生的可能性進行排序,最有可能的放在第乙個。另外在case中推薦使用小的連續整數。

9、所有函式都應該有原型定義。

10、盡可能使用常量(const)。可提高**的效率。

11、把本地函式宣告為靜態(static)。如果乙個函式在實現他的檔案外未被使用的話,應將他宣告為靜態。

12、動態記憶體分配。

13、使用顯示的並行**,盡可能把長的有依賴的序列**寫成可以再流水線單元中並行執行的**。如下:

double a[100],sum;

int i;

sum=0.0f;

for(i=0;i<100;i++)

可寫成:

double a[100],sum1,sum2,sum3,sum4,sum;

int i;

sum1=sum2=sum3=sum4=0.0;

for(i=0;i<100;i+=4)

sum1+=a[i];  sum2+=a[i+1];  sum3+=a[i+2];  sum4+=a[i+3];

sum=(sum1+sum2)+(sum3+sum4);  //流水線並行執行

14、提出公共子表示式。

15、結構體成員的布局。成員對齊,是指結構體成員要與儲存器的單元對齊,如64位的系統,若原結構體總長度為17,會自動填充為24,浪費了空間,所以要是結構體成員合理排序。

16、避免不必要的整數除法。整數除法是整數運算中最慢的,所以應該盡可能避免。避免連除,以乘法代替。

17、把頻繁使用的指標型引數拷貝到本地變數。指標難以優化。

18、賦值與初始化。盡量在需要使用乙個物件時才宣告,並用初始化方法賦初值。

C C學習筆記

1.儲存型別 標準c語言為變數 常量 函式定義了4種儲存型別 extern,auto,static,register,它們分別用乙個關鍵字 儲存型別說明符 來說明。這4種儲存型別可分為兩種生存期限 永久的 即整個程式執行期間都存在 extern和static 和臨時的 即暫時儲存在堆疊和暫存器中 a...

C,C 學習筆記

1.求a的n次方 標頭檔案pow a,n a,n都為double 2.關於指標的一些小測試 includeusing namespace std int main int a 8 int m 3 cout 3.sort位於 algorithm 中,sort p,p n 預設公升序排列。4.inclu...

C C 學習筆記 三

到目前為止,我們看到的所有函式中,傳遞到函式中的引數全部是按數值傳遞的 by value 也就是說,當我們呼叫乙個帶有引數的函式時,我們傳遞到函式中的是變數的數值而不是變數本身。但在某些情況下你可能需要在乙個函式內控制乙個函式以外的變數。要實現這種操作,我們必須使用按位址傳遞的引數 argument...