(變長陣列)變數也可做特殊陣列的長度

2021-07-11 16:44:47 字數 875 閱讀 4723

這個問題困擾我好久,終於完美區分:

看乙個例子:

main()

以上例子中,n明顯是乙個整型的變數,雖然付了值,但是他仍然不可做為陣列的大小,按理說是編譯不通過的,但有些編譯器,卻讓著個編譯過了,

我們說:因為定義陣列時,分配空間是需要乙個固定的值,來確定你所申請的空間的大小。

若int n = 9    int a[n],但是那個n始終是個變數,若n的值改變,則陣列大小也會改變,在對其使用的時候

就會使用到陣列以外的內容,對程式會造成隱患,基本是不會讓你編譯通過的。所以,只能固定的申請a[9],像這類情況,陣列的長度一定為常量;

但是問題來了,今天我還就想用變數做陣列的長度,就是有這樣的情況啊,比如說,乙個函式,功能樹返回乙個陣列中的最大值,然後函式的返回值要做乙個陣列的長度

瞎了,怎麼辦?

方法一:

c/c++中用 malloc 或者 new 來給你要使用的陣列開闢空間,就開乙個變數大小:如下**:

#include int main(void)

{ int *a;

int n,i;

scanf("%d",&n);

a=malloc(sizeof(int)*n);

for (i=0;i

方法二:

c++中可以用容器:vector類。

例子:用的也比較多,就不在閒扯:

#include#includeusing namespace std;

int main()

{ int len;

cin>>len;

vectorarray(len); //宣告變長陣列(變數len)

for(int i=0;i

C 變長陣列

變長陣列在c99及c11的標準中支援,嚴格講在c 的所有標準中都不支援變長陣列,只是各家編譯器對語言的擴充套件 includeint foo int n int main 嚴格按照c99標準編譯 clang t.c o t std c99 pedantic,輸出正常 嚴格按照c11標準編譯 clan...

陣列的陣列(變長陣列)

4.陣列的陣列 變長陣列 可以使用變長陣列,其中每行都有不同的元素個數。為此,需要這樣乙個陣列,其中的每個元素都是另乙個陣列。也可以有陣列的陣列的陣列,或更複雜的陣列。但是,注意這些陣列必須有相同的基本型別。1 宣告陣列的陣列 變長陣列 其語法要在陣列的宣告中指定多個方括號對,例如 int jagg...

vb 可變長 陣列

引用 關鍵點 dim str as string 定義 redim str n 重設長度 or redim preserve str n 重設長度,並保持原來記錄不變 詳細闡述 redim 語句 在過程級別中使用,用於為動態陣列變數重新分配儲存空間。語法 redim preserve varname...