編程小技巧:遍歷數組

        今天跟大家分享的小技巧是關於數組遍歷的。通常我們在對數組進行操作時常常會被數組的下標越界問題所困擾。當然在C語言中編譯器不會去校驗數組下標的邊界,也就是說如果你定義了一個具有5個元素的數組,正面的操作方式在C語言中是完全合法的:

int a[5] = {0, 1, 2, 3, 4};
a[-3];
a[-2];
a[-1];
a[5];
a[6];
a[7];

        但是在其它編程語言中編程器通常會校驗數組的下標是否越界。但這並不是我們今天要分享的關鍵內容。我們想要說的是,即使在C語言中編譯器不去校驗數組下標的合法性,但我們也不希望在使用時取得一個越界的下標。我們在遍歷一個數組時通常的做法是這樣的:

for (int i = 0; i < 5; i++)
{
    a[i] = something;
}

        這是標準的數組遍歷方法,如果我們需要對這個數組循環多次,比如100次的話,我們應該如何編程程序使得數組下標不越界呢?

for (int i = 0, j = 0; i < 100; i++, j++)
{
    if (j >= 5)
    {
        j = 0;
    }
    a[j] = something;
}

        這種做法從邏輯上看沒有任何問題,使用變量i來控制循環的次數,而用變量j來控制數組的下標。這樣的做法雖然達到了我們的目的,但代碼冗長,我們來看一下下面的處理方式:

for (int i = 0; i < 100; i++)
{
    a[i % 5] = something;
}

        巧妙的利用模運算%來對變量i取餘,讓i % 5的結果做爲數組的下標,代碼看起來簡單而實用。

   

        今天的小技巧你學會了嗎?


歡迎關注公衆號:編程外星人

發佈了42 篇原創文章 · 獲贊 190 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章