數組作為函數參數時的傳遞問題


之前,一直認為將數組用於函數傳遞,函數內對數組的改變也會影響調用函數外的該數組,事實也是如此。但是,實際運用中可能會犯一個錯誤。

示例代碼如下:

public class test {
    public static void main(String[] args){
        int[] array = {1,1};
        tt1(array);
        tt2(array);
        System.out.println();
    }
    public static void tt1(int[] array){
        array[0]=array[0]+1;
        int[] a={array[0],array[1],0};
        array=a;
        printArray(array);
    }
    public static void tt2(int[] array){
        array[1]=array[1]+1;
        printArray(array);
    }
    //打印數組
    public static void printArray(int[] array){
        String s="[";
        for(int i=0;i<array.length;i++){
            s=s+" "+array[i];
        }
        s=s+"]";
        System.out.println(s);
    }
}
輸出:
[2 1 0]
[2 2]

上面代碼中,初始數組array={1,1},在tt1函數中先改變為array={2,1},再重新指向另一個新的數組。此時,tt1內的array={2,1,0}。執行完tt1后,開始執行tt2,這時發現array={2,1},而不是{2,1,0},執行完tt2后,tt2內的array={2,2}。

這時,我們發現,當在函數內將數組變量指向新的數組時,原來函數外的數組並不該變。這是因為函數的參數傳遞的是數組的引用,所以在函數內對數組的元素做操作時,函數外的數組也會改變。但如果在函數內將數組變量指向新的數組,則函數內的數組變量不再指向函數外的數組區域。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM