天天看點

程式設計小技巧:周遊數組

        今天跟大家分享的小技巧是關于數組周遊的。通常我們在對數組進行操作時常常會被數組的下标越界問題所困擾。當然在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的結果做為數組的下标,代碼看起來簡單而實用。

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

歡迎關注公衆号:程式設計外星人

繼續閱讀