C定義二維陣列,C 定義乙個二維陣列

2022-10-09 09:22:00 字數 6393 閱讀 2571

1樓:

不是儲存到記憶體中 就是對陣列dham[3][32768]進行初始化 相當於int a[5]=

前面的const是說你在用到陣列的值時不能改變他的值 如果沒有const就可以改變 比如我定義的a[5]就可以改變它的元素的值 不如:

你可以改變a[0]=100 但是dham[3][32768]中的值你就不可以改變 要不然編譯器會報錯

而且有字首const的陣列必須對其進行初始化unsigned int 是資料型別

2樓:

。。。0x表示十六進製制,比如說0x1f=1*16^1+15*16^0=31,十六進製制大於9的數用a,b,c,d,e,f來表示,分別代表10,11,12,13,14,15。程式在執行時會在記憶體中儲存這個陣列,然後就可以使用。

3樓:知常軒

查過三角函式表、對數表嗎?

這裡的**因該是在做一張常數表。就跟你查的紙質的表一樣。只不過這裡把資料寫在記憶體裡而已。至於這錶是什麼,恕我眼拙。

常見的,做一條正弦表,或特殊曲線表,目的是降低計算量,提高(有時是必須的)效率

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

4樓:天方夜譚的哆啦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。多維陣列在實際的工作中使用不多,並且使用方法與二維陣列相似。

5樓: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 ;

6樓:匿名使用者

#include

typedef vector> matrix;

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

7樓:

int row, col;

cin >> row >> col;

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

for(int i=0; i

for(int j=0; j

8樓:倒霉熊

int x,y,**p;

cin>>x>>y;

p=new int*[x];

for(int i=0;i

p[i]=new int[x];

9樓:不宜然

int **parray;

parray = new int8[5];

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

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

10樓:問明

假設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;

11樓:風若遠去何人留

需要先申請乙個m個元素的一維指標空間,然後對每個一維指標上,申請n個元素的物件空間。這樣就可以申請乙個m行n列的二維陣列空間了。

以整型為例

const int m = 10, n = 5;//10行5列。

int ** a;

a = new int *[m];

for(int i = 0; i < m; i ++)a[i] = new int[n];

所得到的a就是10行5列的陣列。

使用後需要釋放,**為

for(int i = 0; i < m; i ++)delete  a[i];

delete a;

12樓:雲淡風輕in蘇州

#include

void main()

int i;

//先開第一維空間

p = new int*[m];

for(i = 0; i < m; ++i) }

c++中如何宣告乙個二維陣列

13樓:匿名使用者

1、一維陣列: 型別說明符 陣列名[常量表示式]例如 int a[10]它表示陣列名為a,此陣列有10個元素

2、二維陣列: 陣列名[下標][下標]例如 a[2][3] 下標可以是整形表示式如a[2-1][2*2-1]不能寫成a[2,3]

a[2-1,2*2-1]

14樓:

int a[m][n];

這代表了乙個m行n列的二位陣列。

或者是int **p;

用指標定義乙個二位陣列。

還有int (*p)[n];

這定義了乙個未知行n列的二位陣列。

希望能幫到你。

祝好運。

15樓:相思丶貓

簡單啊,比如

int a[5][3]; 5行3列的int陣列

16樓:

陣列型別 陣列名 [行數][列數];

int a [3] [5] ;同上

c++如何定義乙個兩個下標數都是變數的二維陣列?

17樓:匿名使用者

用動態陣列可以借用指標的辦法先附上執行截圖:附上程式:#include

using namespace std;int main(void)cout << endl;

}for (int i = 0; i != n; ++i)delete p[i];

delete p;

system("pause>nul");

return 0;}

18樓:匿名使用者

直接宣告就好了,這就是矩陣嘛。

int a[n][n]; 不過要初始化n,然後可以通過宣告下標變數進行陣列的賦值和呼叫

如何在c++中定義乙個可以自定義行數和列數的二維陣列

19樓:莊政警

動態二維陣列一般用堆指標來實現,給你個例子,為測試方便用隨機數填充並輸出:

#include

#include

#include

#include

using namespace std;

int main()

int r, c, i, j;

cout << "輸入矩陣的行數:";

cin >> r;

cout << "輸入矩陣列數 : " ;

cin >> c;

int **m = new int*[r];

for (i = 0; i < r; ++i)m[i] = new int[c];

cout << "隨機數填充的矩陣為:" << endl;

srand(time(0));

for (i = 0; i < r; ++i)for (j = 0; j < c; ++j)m[i][j] = rand() % 100;

//cin>>m[i][j];   //人工輸入輸入for (i = 0; i < r; ++i)for (j = 0; j < c; ++j)cout << m[i][j] << ' ';

cout << endl;

for (i = 0; i < r; ++i)delete m[i];

delete m;

return 0;執行:

c語言 二維陣列指標中的和,C語言 二維陣列指標中的 和

要回答你的這個問題,不妨先根據你的問題先編寫一段小的示例程式 include include using namespace std int a 3 4 int main 這段示例程式在我本地上執行的結果為 a i 0 4214816 a i 4214816 a i 4214816 a i 0 42...

C語言指標與二維陣列求解,c語言中二維陣列的指標如何表示

假設a是乙個二維陣列,則一 a是第乙個一維陣列名,陣列名 就是該陣列的 首位址!二 a 0 和 a都表示這個一維陣列第乙個元素的內容 這句話有問題,應該是 都表示這個 二維陣列 第乙個元素的內容!三 a和a好像不等價啊?關於陣列名和 陣列名書上有明確的介紹與說明 a a a 0 a 0 這是規定!細...

C語言,有如下定義intaa不是定義二維陣列a麼,又定

其實pa是乙個指向 包含 復3個元製素的 一維陣列的指標,因此可以指向任何乙個包含3個元素的一維陣列 而a 2 3 是二維陣列,可以看作是由a 0 和a 1 兩個包含三個元素的一維陣列組成,如a 0 就可以認為是包含a 0 0 a 0 1 a 0 2 三個元素的一維陣列a 0 這樣就可以理解pa a...