關於數組能否用變量聲明長度

第一行照例本鴿子精咕咕咕。

 

寫這個博客的起因:

寫java作業習慣性定義了new int[105][105]的數組交上去並被打回重做。

老師:不允許出現固定數組你105是什麼鬼!

我內心os:????不是不允許變量聲明數組長度嗎(這個人沒聽課+C語言被強調多次記憶太深)。

 

先說結論:Java是可以變量聲明數組長度的。

C語言:

我們學習C語言的時候,都會被強調不能定義一個變量,再利用變量聲明數組。

ex:

int n;
scanf("%d",&n);
int a[n];

這樣是不允許的。包括C++。

C語言中的數組是在程序運行之前提前向系統申請了內存空間,沒有申請空間不允許讀寫。所以如果數組長度是變量,不能提前申請空間,所以不能用變量來設置動態數組。

但可以利用malloc函數來動態分配空間,實現數組的不定長聲明。

Java:

Java的數組是用new來聲明,相當於c++中的new,相當於c中的malloc,是動態分配內存空間的,所以可以用來設置不定長數組。

即:

import java.util.Scanner;

public class T{
    public static void main(String[] args){
        Scanner cin = new Scanner(System.in);
        int n;
        n = cin.nextInt();
        int[] a = new int[n];
    }
}

或許有錯orz歡迎指出錯誤

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章