動態定義多維陣列

2022-03-25 10:02:45 字數 1952 閱讀 5105

1.普通陣列的定義(維數)

const unsigned int buf_size=512, max_files=20

;int staff_size=27

;const unsigned sz=get_size();

char input_buffer[buf_size];//

ok,是const變數

string filetable[max_files+1];//

ok,是constant表示式(常量表示式)。

double salaries[staff_size];//

error,不是const變數。

int test_scores[get_size()];//

error,不是const表示式。

int vals[sz];//

error,直到執行階段才能知道sz的值。

陣列的維數必須用值大於等於1的常量表示式定義。此常量表示式只能包含整形字面值常量、列舉常量或者用常量表示式初始化的整形const物件

非const變數以及要到執行階段才知道其值的const變數都不能用於定義陣列的維數。

2.動態定義一維陣列

利用new,生成動態陣列,動態陣列的維數可以是變數或常量。

#include#include

using

namespace

std ;

intmain()

3.動態生成多維陣列

//

動態定義二維陣列、三維陣列

#include#include

using

namespace

std ;

intmain()

//釋放二維陣列

for( i = 0 ; i < row ; i ++)

delete p2[i] ;

delete p2 ;

cout

<<"

輸入三維陣列高,行,列 : ";

cin>>hight>>row >>col ;

//動態定義三維陣列:

int ***p3 = new

int**[hight ] ;

for( i = 0 ; i < hight ; i ++)

p3[i] = new

int*[row] ;

for( i = 0 ; i < hight ; i ++)

for( j = 0 ; j < row ; j ++)

p3[i][j] = new

int[col] ;

//輸入三維陣列值:

for(i = 0 ; i < hight ; i ++)

for(j = 0 ; j < row ; j ++)

for( k = 0 ; k < col ; k ++)

p3[i][j][k] = rand()%10;//

輸出三維陣列:

cout<<"

輸出三維陣列

"

cout

<}

//釋放三維陣列

for( i = 0 ; i < hight ; i ++)

for( j = 0 ; j < row ; j ++)

delete p3[i][j] ;

for( i = 0 ; i < hight ; i ++)

delete p3[i] ;

delete p3 ;

return0;

}

動態定義二維陣列:int **p2=newint*[row];生成乙個長度為row的一維指標陣列,陣列中的每個元素都是int*型別,每個指標可以再指向乙個一維int陣列。

動態多維陣列

寫 的時候會碰到多維陣列的記憶體分配和釋放問題,在分配和釋放過程中很容易出現錯誤。下面貼上一些示例 以供參考。如果要給二維陣列 m n 分配空間,可以寫成下面 char a,i 先分配m個指標單元,注意是指標單元 所以每個單元的大小是sizeof char a char malloc m sizeo...

R語言定義多維陣列

r語言定義多維陣列 陣列有乙個特徵屬性叫做維數向量 dim屬性 維數向量是乙個元素取正整數值的向量 其長度是陣列的維數,比如維數向量有兩個元素時陣列為二維陣列 矩陣 維數向量的 每乙個元素指定了該下標的上界,下標的下界總為1。一組值只有定義了維數向量 dim屬性 後才能被看作是陣列。比如 z 1 1...

C 中的動態多維陣列

前言 c 的new操作符是該語言乙個非常好的語法特性,然而實際使用中卻發現new操作符有不少限制,為突出的一點便是用new操作符分配多維陣列空間時,不能讓陣列的每一維都動態可變。本文將對此提出乙個簡單直觀的解決方案,在乙個實際問題的簡化模型中加以說明,並以此釋清許多初學者對c 中new操作符與多維陣...