C 用變數定義陣列

2022-02-15 00:07:10 字數 1500 閱讀 4906

較早的編譯器是不同意這樣做的,所以一些書籍比方以tc解說的書本都說陣列的下標不能是變數。在vc6.0下亦是如此。

只是在一些較新的編譯器如dev c++已經支援了,例如以下**不會報錯

#include #include int main()
可是new出來的一定不要忘了delete掉

delete a; // 正確的使用方法

delete a; // 錯誤的使用方法

後者相當於delete a[0],漏掉了另外n-1個物件。

二維:

1 //設有m行n列

2 cin>>m>>n;

3 int **a = new int* [m];

4 for(int i = 0; i < m; i++)

5

這樣就相當於產生了乙個二維陣列a[m][n]了,可是對於我們平時宣告的陣列a[m][n],a[i][j]=a[i*n+j],由於是連續的一片記憶體,而這樣動態宣告的陣列隨意的a[k]都是乙個int*型別,即乙個位址了,

所以僅僅能a[i][j]或者*(*(a+i)+j)來訪問陣列的元素,而不能a[i*n+j]這樣轉換著用。

1 //釋放記憶體:

2 for(int i = 0; i < m; ++i)

3 4

8 delete a;

還有就是使用stl容器

之所以動態宣告陣列,相比是大小不確定,宣告太大了怕浪費空間,而vector就不用指定大小,當存的資料變多,自己主動擴大容量,比方如果vector預設大小是8,當你再往裡存第9個元素時,容器自己主動擴容,變為16,16再不夠用,擴為32,2倍2倍的增長,這樣就依據須要擴容,不會浪費空間,也能夠像普通陣列那樣直接指定vector的大小,總之普通陣列能夠的它都能夠,普通陣列沒有的它更有。

第一種方法

1 #include 2 #include 3 #include 4 #include 5 using namespace std;

6 7

8 int main()

9 16

17 for(int i=0; i< obj.size(); i++)//輸出二維動態陣列

18 {

19 for(int j=0;j第二種方法

1 #include 2 #include 3 #include 4 #include 5 using namespace std;

6 7

8 int main()

9 {10 int n=5, m=6;

11 vector> obj(n, vector(m)); //定義二維動態陣列5行6列

12

13 for(int i=0; i< obj.size(); i++)//輸出二維動態陣列

14 {

15 for(int j=0;j以上就是動態陣列的定義方法啦。

C 用變數定義陣列

較早的編譯器是不同意這樣做的,所以一些書籍比方以tc解說的書本都說陣列的下標不能是變數。在vc6.0下亦是如此。只是在一些較新的編譯器如dev c 已經支援了,例如以下 不會報錯 include include int main 可是new出來的一定不要忘了delete掉 delete a 正確的使...

asp動態定義陣列(用變數作為陣列

在陣列是不能直接用變數來定義下標的,如 n 5dim a n 這樣就會報錯 為了達到不固定的下標值,可以用的execute n 5execute dim a n response.write ubound a 輸出結果為5 還有另一種方法就是用redim redim是可以使用變數的 dim danx...

C陣列指標變數的定義

define crt secure no warnings include include include void demo for i 0 i 5 i puts printf myarray代表陣列首元素的位址 myarray p myarray 1 p n myarray,myarray 1 ...