1. 程式人生 > >C++中如何動態分配二維陣列

C++中如何動態分配二維陣列

一直對二維陣列 動態分配問題比較模糊,今天來終結一下。

我們一般使用二維陣列可以直接定義如下:

<span style="font-size:14px;">#include<iostream>
using namespace std;

int main()
{
    int array[5][5];
}</span>

但是有時候我們不知道陣列的維數,C++不允許直接用變數作為維數,所以就要用到動態分配。我們先看看如何動態申請一個一維陣列。

<span style="font-size:14px;">int num;
int* array=new int[num];
</span>
上述兩行程式碼的意思就是用new申請 num 個 int 型別的空間,然後返回這段空間的首地址,將這個地址賦給array。array是一個指向int 型的指標,且指向那塊申請的空間。

申請二維陣列需要對指標的理解比較透徹,程式碼如下:

int row=3;
int col=5;
int** array=new int* [row];
for(int i=0;i<row;i++)
{
    array[i]=new int[col];
}

第3行先申請int* 型陣列的的空間,該空間存放的是int*型的指標變數,然後把這塊指標變數的空間首地址賦給array,


然後再給int* 型別的指標分別分配空間即可,如下圖:


關於二維陣列的釋放:

動態分配的記憶體需要我們手動釋放,程式碼如下:

for(int i=0; i<row; i++) 
{
  delete[] array[i];
 }
 delete[] array;
很簡單就不再多講了。

相關推薦

如何在C/C 動態分配陣列

                如何在C/C++中動態分配二維陣列在C/C++中動態分配二維陣列可以先申請一維的指標陣列,然後該陣列中的每個指標再申請陣列,這樣就相當於二維陣列了,但是這種方法會導致每行可能不相鄰,從而訪問效率比較低。如何申請連續的二維陣列了?本文將分別三個方面講解:一.動態申請列大小固定的二

如何在C++動態分配陣列

這個問題應該是我以前在CSDN蹭分時回答次數比較多的一個問題了,我的回答一般是三種方法:(1)用vector的vector,(2)先分配一個指標 陣列,然後讓裡面每一個指標再指向一個數組,這個做法的好處是訪問陣列元素時比較直觀,可以用a[x][y]這樣的寫法,缺點是它相當於C

C++動態申請陣列並釋放方法

 C/C++中動態開闢一維、二維陣列是非常常用的,以前沒記住,做題時怎麼也想不起來,現在好好整理一下。  C++中有三種方法來動態申請多維陣列   (1)C中的malloc/free   (2)C++

C++如何動態分配陣列

一直對二維陣列 動態分配問題比較模糊,今天來終結一下。 我們一般使用二維陣列可以直接定義如下: <span style="font-size:14px;">#include<iostream> using namespace std; int ma

C++動態定義一陣列陣列,三陣列

//動態定義一維陣列、二維陣列、三維陣列 #include<iostream> #include<ctime> using namespace std ; int main() { int hight , row , col ; register

簡潔明瞭,C++動態定義一陣列陣列,三陣列

#include<iostream> #include <ctime> #include <cstdlib> using namespace std; int main() { int hight , row , col ; regis

c++動態分配陣列

程式碼 #include <iostream> using namespace std; typedef int Type; Type** create(int row, int col)

C++如何動態申請陣列

最近在寫cuda相關的程式碼遇到矩陣的問題就避免不了二維動態陣列的記憶體申請。所以實際測了一下,一下程式碼可以用。 #include <iostream> #include <stdlib.h> int main() { double **V,*h_c; V = (

C++指標訪問陣列

學習C++時候關於指標陣列的幾個概念有些迷,搞清楚後寫篇部落格梳理一下 1.系統在編譯陣列和下標時會將其編譯為*(陣列名+下標),其中下標為陣列元素的長度 2.系統在處理二維陣列的時候將其看為陣列元素為一維陣列的一維陣列 #include<iostream>

動態分配陣列以及指標的相關精華

八。指標型別轉換     當我們初始化一個指標或給一個指標賦值時,賦值號的左邊是一個指標,賦值號的右邊是一個指標表示式。在我們前面所舉的例子中,絕大多數情況下,指標的型別和指標表示式的型別是一樣的,指標所指向的型別和指標表示式所指向的型別是一樣的。 例十四: 1。 float f=12.3; 2。 float

c++動態分配/三陣列的記憶體

轉自http://blog.csdn.net/boylinux/article/details/7783871 本文主要目的是用c和c++分別實現動態分配二、三維陣列。一般而言,在C中用malloc和free實現,而在C++中用new和delete。 new和delete是

C++程式設計筆記:陣列動態分配與釋放

當給定的條件不同時,二維陣列的動態分配方式不同。例如,已知二維陣列的行數(即第一維維度)為多少的情況下對其進行動態分配,與知道列數(第二維維度),或者兩個維度都未知的情況下,二維陣列的動態分配方式都不同,對應的釋放方式也不同。下面我們就來一一介紹。 1.

c使用malloc動態申請陣列

前言今天寫程式碼的時候,想要動態的申請一個二維陣列空間,思索了一段時間才寫出來,這裡記錄一下吧,以後就不至於再浪費時間了。下面以申請int型陣列作為例子:申請一維陣列一維陣列的陣列名可以看成陣列起始元素的首地址,因此我定義一個int *arr的指標,分配n個大小的int型空間

C++找出一個陣列的鞍點,即該位置上的元素在該行上最大,在該列上最小(也可能沒有鞍點)

今日正式用csdn部落格記錄,回顧我所學到的知識,分享一些我的人生感悟和自身經歷。也希望未來通夠過此平臺和更多喜愛程式設計的人交流學習。 道聽途說再加上自己的感悟,認為程式設計最重要的是思想,而不是語言本身,語言只是個工具。所以我們得先學思想。遇到問題,應該先想如果是自己去做會怎麼處理,但我們不

c語言 將一個陣列行和列的元素互換,存到另一個陣列

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

C++ 動態申請陣列陣列傳參

以往在C++的學習中我們知道: int *ptr = new int; 這樣可以動態分配一個int型指標 int *ptr = new int[3]; 這樣可以動態分配一個一位陣列 但是如何動態分配一個二維陣列呢?像這樣: int *ptr = new int[3][3] ?執行

在Unity3D利用描點法畫圓——使用C# 泛型List陣列

二維陣列的使用舉例: List <List <int >> array1 = new List <List <int >>();         List <int> array2 = new List <

C++和Java動態開闢陣列

C++: 以int a[n][m];為例: 開闢記憶體: a = (int**)new int *[n]; //申請a陣列行向量陣列 for(i = 0; i < n; i++)//申請a陣列行的儲存空間    a[i] = new int[m]; 釋放記憶體: fo

C++動態申請陣列

    動態申請陣列,在C/C++程式設計之中也算是比較常見的操作,動態申請一維陣列相信列位也都能從書中找到,但對於動態申請二維陣列,似乎書中甚少提及,不過沒關係,看完本文之後我們對於這個操作也就能有個清晰的認識了。下面我們進入正文:     動態申請一維陣列的方法很簡單

在Vue項目動態生成碼 阿星小棧

logs console toc ons template imp return important 轉換 一、使用jquery.qrcode生成二維碼 1、首先在頁面中加入jquery庫文件和qrcode插件 <script type="text/javascri