天天看點

高品質的C代碼.關于循環周遊

未經許可,不的轉載

版權歸屬高雷個人

聯系方式:

QQ:   38929568

本系列BLOG僅在以下3個位址釋出

<a href="http://kome2000.blog.51cto.com/">http://kome2000.blog.51cto.com/</a>

<a href="http://38929568.qzone.qq.com/">http://38929568.qzone.qq.com/</a>

<a href="http://blog.csdn.net/kome2000">http://blog.csdn.net/kome2000</a>

關于循環周遊

1.for循環

常見方式

int i;  

for( i=0; i&lt;N; i++ )  

{  

    //進行操作的代碼 略  

 通常用于循環步進的變量為i,j,k,m,n...等但字母變量。從效率和可讀性考慮,循環的層次最好要低于3層。

對于循環結束條件,首選小于,如果需要&lt;=N或者&gt;0等其他條件來做循環結束條件,需要增加注釋說明當時為何要這麼做!

1.1 2層循環也比較常見,比如周遊一個二維數組

int array[row][col];  //row為行數常量,col為列數常量  

int i,j;  

for( i=0; i&lt;row; i++ )  

    for( j=0; j&lt;col; j++ )  

    {  

        //數組通路形式array[i][j],  

        //進行操作的代碼 略  

    }  

 内層循環一定要是數組的第一維,因為我們知道數組是連續的記憶體空間,任何維數的數組都可以改寫成1維數組,

數組的第一維一定是連續的記憶體位址,是以計算機在通路連續的位址時速度快,

另外先處理數組的第一維也是比較直覺,更能夠讓閱讀代碼的人了解的方式。

1.2 如果第一維數比較少,比如1000個坐标的數組

可以定義成

int pos[1000][2];//其中第一維僅有2個值,下标為0的時候表示X坐标,小标為1時表示Y坐标

這樣的數組可以用1層循環來周遊,這樣可以減少CPU跨切循環層次的次數。

例如

for( i=0; i&lt;1000; i++ )  

    //pos[i][0];  

    //pos[i][1];//分别對下标0.1...進行處理  

 本文轉自 kome2000 51CTO部落格,原文連結:http://blog.51cto.com/kome2000/599126

繼續閱讀