怎麼定義二維動態陣列,怎麼定義一個二維動態陣列

2022-03-25 20:53:05 字數 6542 閱讀 5335

1樓:匿名使用者

public double culcofv(int ysize,int nsize)

2樓:匿名使用者

用new申請空間;

再在對每個數進行初始化;

//動態定義和初始化二維陣列 部分**

cout<<"輸入二維陣列的行,列 :";

cin>>row >>col ;

int **p2 ;

p2 = new int*[row] ;

for( i = 0 ; i < row ; i ++ )p2[i] = new int[col] ;

//輸入二維陣列的值

for( i = 0 ; i < row ; i ++ )for( j = 0 ; j < col ; j ++ )p2[i][j] = rand() % 10 ;

//輸出二維陣列

cout<<"輸出二位陣列:"<

for( i = 0 ; i < row ; i ++ )//釋放二維陣列

for( i = 0 ; i < row ; i ++ )delete p2[i] ;

delete p2 ;

c++怎麼定義一個動態二維陣列

3樓:天方夜譚的哆啦a夢

#include

#include

#include

#definerank10

#definecolumn7

intmain()

inti,j;

int(*p)[column];

//動態生成二維陣列,指定列數為column,如果想改,可以進行修改

//的引數,如果想定義n行2列就為:p=(int(*)[2])malloc(n*2*sizeof(int));

p=(int(*)[column])malloc(rank*column*sizeof(int));//動態申請n行column列的二維陣列

for(i=0;ifor(j=0;jp[i][j]=i*j;

for(i=0;ifor(j=0;jprintf("%d,",p[i][j]);

printf("\n");

free(p);

system("pause");

return0;

擴充套件資料

定義一個三維陣列:

intx[3][4][5];

定義了一個三維陣列,陣列的名字是x,陣列的長度為3,每個陣列的元素又是一個二維陣列,這個二維陣列的長度是4。

並且這個二維陣列中的每個元素又是一個一維陣列,這個一維陣列的長度是5,元素型別是int。多維陣列在實際的工作中使用不多,並且使用方法與二維陣列相似。

4樓:go陌小潔

用new申請空間;

再在對每個數進行初始化;

//動態定義和初始化二維陣列 部分**

cout<<"輸入二維陣列的行,列 :";

cin>>row >>col ;

int **p2 ;

p2 = new int*[row] ;

for( i = 0 ; i < row ; i ++ )p2[i] = new int[col] ;

//輸入二維陣列的值

for( i = 0 ; i < row ; i ++ )for( j = 0 ; j < col ; j ++ )p2[i][j] = rand() % 10 ;

//輸出二維陣列

cout<<"輸出二位陣列:"<

for( i = 0 ; i < row ; i ++ )//釋放二維陣列

for( i = 0 ; i < row ; i ++ )delete p2[i] ;

delete p2 ;

5樓:匿名使用者

#include

typedef vector> matrix;

這樣matrix就是二維陣列了,可以用push_back()動態往裡面新增元素 ,不用預先定義陣列大小

6樓:

int row, col;

cin >> row >> col;

int** ptr = new int* [row];

for(int i=0; i

for(int j=0; j

7樓:倒黴熊

int x,y,**p;

cin>>x>>y;

p=new int*[x];

for(int i=0;i

p[i]=new int[x];

8樓:不宜然

int **parray;

parray = new int8[5];

for (int i=0 i<5; ++i)for (int i=0; i<5; ++i)delete parray;

c語言中如何定義動態二維陣列並輸出

9樓:會飛的小兔子

intmain()

//釋放記憶體

for(i=0;ifree(p[i]);

free(p);

return0;

}擴充套件資料c語言中通過函式傳遞二維陣列

#include

void func(int n, int a[size])void main()

10樓:達豐

實現先輸入二維陣列的行數m和列數n,並再輸入m*n個整型資料存到動態二維陣列中。最後輸出所有二維陣列的元素值。**如下:

int main()

//釋放記憶體

for(i = 0; i < m; i ++)free(p[i]);

free(p);

return 0;}

11樓:_葉子妞妞

可以按照下面步驟進行定義二維陣列並輸出:

1 定義二維指標。

2 確定陣列維數,即行數和列數。

3 申請行數個一維指標大小空間,並賦值給二維指標。

4 對於每個一維指,申請列數個元素的空間,並賦值給對應的一維指標。

5 輸入或賦值資料。

6 使用雙重迴圈,逐個範圍儲存單元並輸出。

7 逐個釋放一維指標上的記憶體。

8 釋放二維指標上的記憶體。

以整型二維陣列為例:

下面的**,實現先輸入二維陣列的行數m和列數n,並再輸入m*n個整型資料存到動態二維陣列中。最後輸出所有二維陣列的元素值。

#include //包含輸入輸出函式

#include //包含動態記憶體分配函式。

int main()

//釋放記憶體

for(i = 0; i < m; i ++)free(p[i]);

free(p);

return 0;}

12樓:匿名使用者

多維陣列一維

化...

#include

#include

int main()

}for(i=0;i

printf("\n");}}

13樓:匿名使用者

先定列空行 a[2]

c語言如何動態分配二維陣列??

14樓:

一、二維資料的記憶體空間動態分配

方法一:

首先arr是一個二級指標,為arr分配xdim空間,每一維都是一個指向陣列的指標,且每個陣列內部的地址空間是連續的,但是陣列之間的地址空間沒有連續性。

這種分配方法在記憶體中的佈局如下:

方法二:

這種方法相當於動態分配了一個一維的連續的空間,然後讓相應的陣列指標指向某些固定的位置達到呼叫的目的。

這種分配方法在記憶體中的佈局如下:

二、二維資料的記憶體空間釋放

對於第一種分配方式需要一個一個釋放,對第二種方式只要分配兩個指標即可。

三、完整**

15樓:匿名使用者

使用malloc函式,先分配第一維的大小,然後再迴圈分配每一維的大小。

示例**,分配3行4列二維陣列:

#include

#include

int main()

//初始化

for (i = 0; i < 3; ++i)}//輸出測試

for (i = 0; i < 3; ++i)printf ("\n");

}//釋放動態開闢的空間

for (i = 0; i < 3; ++i)free(a);

return 0;}/*

輸出:0 1 2 3

1 2 3 4

2 3 4 5*/

16樓:

假設你要定義3行4列的陣列

int **a;

n=3,m=4;

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

for(j=0;j

a[j]=(int*)malloc(m*sizeof(int*));

釋放的時候也要先釋放列後釋放行

for(j=0;j

free(a[j]);

free(a);

a=null;最後給他賦個零。

ok分給我吧

17樓:匿名使用者

如果p是這樣char **p;定義的。

那好像*p=(char **)malloc(1000*sizeof(char *));要改成p=(char **)malloc(1000*sizeof(char *));

c++中怎麼用new函式定義一個二維陣列?

18樓:問明

假設a,b為兩個int型變數,如果希望這樣生成一個二維陣列:new int[a],是不會得到編譯器允許的——因為沒有指定這個陣列的元素型別。

由於b的大小未知,編譯器無法確定『int』到底是一個什麼型別。所以,要用new建立一個二維陣列。

方法一:使用常量

接上:如果將b指定為一個常量,例如new int[a][5],其實質與new int[a]建立一個動態陣列並無多大區別——只是元素型別由int變為了'int[5]'而已。

示例**:

void testfunc_(unsigned int n)

unsigned int i,j;

//元素型別為『int[5]』的陣列,可賦值給『int[5]』型別的指標.

int(*array2d)[5]=new int[n][5];

for(i=0;ifor(j=0;j<5;++j)

array2d[j]=i*5+j;

//**方法和普通動態陣列相同,使用'delete'即可

deletearray2d;

用這個方法來建立二維陣列,比較直觀、易用,但它最大的限制在於:你必須在編譯時確定b的大小。

方法二:使用指標間接引用

首先建立若干個大小一致的動態陣列,然後將這些陣列的首地址(轉化為指標)按順序儲存到一個動態陣列中,就相當於模擬了一個二維動態陣列。

示例**:

void testfunc_pointer(unsigned int height,unsigned int width)

unsigned int i,j;

//陣列的元素型別為『int*』,可賦值給指向『int*』的指標.

int**array2d=new int*[height];

for(i=0;iarray2d=new int[width];

//訪問.

for(i=0;ifor(j=0;j//記憶體非連續,注意防止越界.

array2d[j]=i*width+j;

//首先**低一級的動態陣列.

for(i=0;ideletearray2d;

//然後**高一級的動態陣列.

deletearray2d;

方法三:使用vector

藉助stl中的vector,我們可以很直觀的建立一個二維陣列,而不需要用到基本陣列的概念。

示例**:

void testfunc_vector(unsigned int height,unsigned int width)

typedef std::vectorintvector;

typedef std::vectorintvector2d;

unsigned int i,j;

intvector2d*parray2d=new intvector2d;

//動態設定大小.

parray2d->resize(height);

for(i=0;i(*parray2d).resize(width);

for(i=0;ifor(j=0;j(*parray2d)[j]=i*width+j;

delete parray2d;

在C語言中定義二維陣列long a,則陣列佔多少位元組的儲存空間

c語言中long佔4個位元組,所以longa 3 5 佔4 3 5 60個位元組 從元素角度理解a代表a 0 0 從二維陣列理解a代表a二維陣列名,即二維陣列首地址 從一維陣列角度理解a代表a 0 即二維陣列第一行看作一個一維陣列,a 0 為這個一維陣列的首地址 a 1 從二維陣列看代表a 1 0 ...

c語言中定義動態一維陣列的函式,然後在主函式中使用

如果要獲取記憶體地址,你上面那種函式獲取方法是錯誤的.函式中int a僅僅是主函式變數ff的一個副本,ff當初沒有具體指明地址,傳遞給a也是不確定地址,a分配完畢,只是修改a自身指向,並不修改ff指向.所以用下面方法進行修改,採用返回地址方法 include 包含標頭檔案 include int a...

thinkphp二維陣列怎麼插入資料庫

data array 216 array a 1,b 3456,c 廣州天河 d 98765 217 array a 1,b 3456,c 廣州天河 d 98765 218 array a 1,b 3456,c 廣州天河 d 98765 219 array a 1,b 3456,c 廣州天河 d 9...