C 動態增加陣列長度,c 動態定義陣列長度

2022-08-01 12:02:19 字數 1521 閱讀 3137

1樓:匿名使用者

1.你可以設立一個指標intpointer(指標和陣列本來就是一家人):int *intpointer;

然後當取得了i的值後用:intpointer=(int *)malloc(i*sizeof(int));

int main()

2樓:時空魔法

用new 陣列長度給定後。如果想增加。只能重新分配空間。儲存元素,然後在進行刪除

3樓:匿名使用者

用realloc函式,在原基礎上再次分配

4樓:小爺

#include

using namespace std;

int main()

p=new int[len];

for(int y=0;y

}p[j]=c;

j++;

while(cin.peek()==' ') //遮蔽空格if(cin.peek()=='\n')

}for(int n=0;n

return 0;}

5樓:匿名使用者

int *ch = null;

int length = 0;

cin>>length;

ch = new int[length];

......

deletech;

ch = null;

c++動態定義陣列長度

6樓:匿名使用者

你可以先定義一個全域性指標變數(如果要求整型陣列的話就是int* a,字元型就是char* a等),指標你可以把它理解成陣列int a,這裡陣列a就相當於int*a,但這時指標還沒有分配記憶體空間,只要分配了就相當於陣列,但比陣列的優勢在於可以動態定義長度,如果分配了空間之後a中儲存的值就是分配的空間的位置 ,比如分配空間後a中值為2000,表明它指向2000這個位置,由於是全域性變數,因此函式執行完,a也不會消失,因此一直都有a=2000(除非在函式中被重新分配了空間)

再分配記憶體區域,用new函式,比如整型指標,就用語句a=new int[n+1],就相當於此時已經定義了陣列a[n+1],後面的操作可以就相當於有了a[n+1]該怎麼用就怎麼用

最後當你把陣列使用完畢後,要釋放掉記憶體空間,免得空間浪費,用delete釋放掉記憶體空間,以後在想給a分配空間再用new分配就好了

如何求 c++ 動態陣列的長度

7樓:

陣列申明在函式內部,屬於區域性變數,存放在了棧上,看看陣列佔用的記憶體大小:1000000=1000*1000然後乘以int型資料長度

1000*1000*4byte約等於4m,而棧的預設記憶體空間為1m左右,所以會導致記憶體溢位解決這個問題,可以將陣列申明在全域性儲存區或堆上即可方法一:申明為全域性變數

方法二:存放在堆上

ch(e,b:b,),確認後則返回查詢的結果「」。 特

c陣列長度問題

樓主 首先我不知道你用的是什麼環境,我用的是win7 vs2008 long a 256000 很明顯你定義 a 陣列時候已出了。把陣列的長度定義小一點就可以通過了。vc 的堆疊大小預設是 1m,不過可以在編譯選項中設定。你的陣列肯定超1m棧空間.執行時棧溢位 因為你定義的是區域性變數,在棧裡分配空...

用c語言動態三維陣列用C語言,動態三維陣列

1 先說二維,可以這麼理解 int n 3 有3個int 那麼,int m 5 3 有5個int 3 賦值時 n 1 3把3給1號 m 4 m 4 是個int 3 型別,這麼賦值,也就是這麼賦值 m 4 的 0 是5 m 4 0 5 m 4 1 9 m 4 2 4 懂了嗎?三維甚至更多維大同小異,比...

c 怎麼動態分配陣列並賦值,C 怎麼動態分配一個陣列並賦值

在c 中 大家可能都會使用new關鍵字來 在堆中 動態分配 方法是 int arr new int 變數或數值 可以動態分配指定長度的陣列 在c語言中要使用 malloc calloc 來進行分配 如果要賦值的話可以在申請完記憶體後 使用迴圈進行賦值也可以使用c庫中提供的記憶體操作函式 memset...