1. 程式人生 > >C++學習筆記——C++動態陣列的建立與刪除

C++學習筆記——C++動態陣列的建立與刪除

一、C++建立一維陣列
在C++中建立動態陣列,是用new來實現的

type *p = new type [N]

當然也可以分開來寫

type *p1;
p1 = new int [N];

type是指具體的資料型別, N代表的是一維陣列的列數
每次使用new後都要釋放

delete[] p1; 

二、C++建立二維陣列
一般的格式:
type (*p)[N] = new type [][N]

type是指具體的資料型別, N代表的是二維陣列的列數
另一種格式:不需要寫列數
舉例:建立一個5行3列的int型二維陣列

int **p;
p = new int
*[5]; //建立一個指標陣列,每個元素都是一個指標 for (int i = 0; i < 5; i++) { p[i] = new int[3];//每一個指標陣列中的元素指標都指向一個3個元素的陣列 }

當然在每次使用完動態陣列後,需要將其釋放

for (int i = 0; i < 5; i++)
{
    delete[] p[i];
}
delete[] p;

建立一個動態的row行col列陣列,並隨機賦值0-9

include "iostream"
include "ctime"

using namespace std;

int main()
{
    int
row, col; int i, j; srand((unsigned)time(NULL)); 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; } } //輸出陣列 for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { cout << p2[i][j] << '\t'; } cout << endl; } //釋放二維陣列 for (i = 0; i < row; i++) { delete[] p2[i]; } delete[] p2; }

三、建立三維陣列
和建立二維陣列一樣,只需要在新增第三個變數就能完成三維陣列的建立。

例項:建立一個動態的高height、行row、列col的三維陣列,並隨機賦值0-9

#include "iostream"
#include "ctime"
using namespace std;

int main()
{
    int hight, row, col;
    int i, j,k;
    srand((unsigned)time(NULL));
    cout << "輸入三維陣列高,行,列 : ";
    cin >> hight >> row >> col;
    //動態定義三維陣列:
    int *** p3;
    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 << "輸出三維陣列" << endl;
    for (i = 0; i < hight; i++)
    {
        for (j = 0; j < row; j++)
        {
            for (k = 0; k < col; k++)
                cout << p3[i][j][k] << ' ';
            cout << endl;
        }
        cout << endl;
    }
    //釋放三維陣列
    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;

}

相關推薦

C++學習筆記——C++動態陣列建立刪除

一、C++建立一維陣列 在C++中建立動態陣列,是用new來實現的 type *p = new type [N] 當然也可以分開來寫 type *p1; p1 = new int [N]; type是指具體的資料型別, N代表的是一維陣列的列數

C指標 三維動態陣列建立

#include "stdafx.h" #include <stdio.h> #include <stdlib.h> //create 3D array add init cell 0 int*** createArray3D(int row, int col, int c

c學習筆記--1基本輸入輸出操作符

好久之前的了,學習c語言的筆記。 依舊是老套路,從基礎的變數型別,到函式定義一步步學起 #include <string.h> #include <stdio.h> //printf函式是一個標準庫函式,它的函式原型在標頭檔案“stdio

C/C++學習筆記整理】--2.breakreturn0、常用函式的用法

5.break和return 0  的區別 break 是跳出迴圈,執行迴圈體的外的程式;return 0  是結束程式,返回到main函式 6.sort()函式的用法    sort(begin,end,cmp),cmp引數可以沒有,如

c++學習筆記 第四章 類物件

1.鐘錶類   #include<iostream> using namespace std; class Clock { public: void setTime(int newH = 0, int newM = 0, int newS = 0); void sh

c++學習筆記動態規劃(最長公共子序列,01揹包問題,金錢兌換問題)

/* 參考書:演算法設計技巧與分析 M.H.Alsuwaiyel著 吳偉旭 方世昌譯 ---------------------------------------------------------------- 1.遞迴 將問題分成相似的子問題 1.1Fa

C++學習筆記(二)——構造析構

建構函式:在建立物件時執行的函式 特性: 1.建構函式與類名相同 2.建構函式無返回型別(必須沒有) 3.建立物件時被呼叫(類似於初始化) 4.建構函式可以有引數(建立時直接傳入) 形如:A(); 以下是一個建構函式的例子: #include <s

JavaFX學習筆記——重要理念的建立辨析(六)

慎用property繫結 原因:     1.常會出現意料之外的情況     2.程式碼可讀性降低   舉例:     Circle circle = new Circle(10

JavaFX學習筆記——重要理念的建立辨析(五)

處理器註冊與定義分離 問題      看過相關教程後,我們肯定對JavaFX在事件處理上,介紹的lambda表示式以及內部類簡潔用法印象深刻。但細想後其仍有很大的侷限性。     侷限一:不適用與團

JavaFX學習筆記——重要理念的建立辨析(三)

邏輯與樣式分離 這是我從網頁前端設計的HTML、JavaScript、CSS借鑑而來的概念,適用於所有團隊開發。   定義各元件的時候,往往會有下面這種想法 我Circle circle = new Circle(centerX,centerY,radius),順便就在

JavaFX學習筆記——重要理念的建立辨析(二)

並非萬物皆為Node 對Stage和Scene的大小位置等屬性設定與Node不統一             可能是之前用過QT以及cocos2dX的先入為主的觀念導致的問題 &n

JavaFX學習筆記——重要理念的建立辨析(一)

儘量使用css設定樣式 原因: 1.CSS語法簡單,格式統一,簡化了程式碼重用的方法,使得頁面邏輯與頁面樣式的設計相分離,更有利於團隊協作。更改起來也更加方便。 2.在靜態(即只需初始化一次,沒有太多複雜的額外操作)的元件樣式設定或者簡單動態響應(如滑鼠移入時的樣式,只需在類名中加“:h

C++學習筆記——C++ Primer Plus中文第六版 第十六章STL程式設計練習解答

發現答案資源不全,因此貼出自己的解答,都為STL應用基礎題,如有謬誤,還請不吝賜教。 第一題 要求:迴文字串判斷(假定字串中沒有大小寫、空格、標點符號等問題) 解答: #include<iostream> #include<string>

C++學習筆記——C++簡介

1.C++發展史 C++語言來源於C語言,在C語言的基礎上增加了面向物件設計的要素從而得到了發展。 1979 年,C++ 是由 Bjarne Stroustrup在新澤西州美利山貝爾實驗室開始設計開發的。C++ 進一步擴充和完善了 C 語言,最初命名為帶類的C,後來在 1983 年更名為 C++。 20

JavaFX學習筆記——重要理念的建立辨析(八)

Node不能被Pane(Group)共享 問題 倘若編寫如下程式碼,試圖將一個circle裝入兩個pane中,會有問題                            Pane pane = new Pane(); ObservableList<Node&

JavaFX學習筆記——重要理念的建立辨析(七)

建立父子節點 教程中似乎都沒有強調這件事情,是默認了嗎?(不知道) 總之囉嗦一下,把邏輯相同或者相似的元件Node裝入一個Group或者Pane或者任何繼承自Parent型別的子類物件中,這種封裝很有必要,幫助你把多個Node看成一個整體,可以對其父節點進行操作,即所有子

linux下c++學習筆記——c++編譯器安裝(CLion)

c++編譯器安裝 參考部落格 https://blog.csdn.net/weixin_36926794/article/details/80291034 啟用 https://blog.csdn.net/krais_wk/article/details/80970355 wget

linux下c++學習筆記——c++編譯執行

c++編譯執行 預處理 合併多個單張圖片的txt檔案為一個訓練txt cat *.txt > train.txt 替換檔案中的特定字串(將’80 '替換為’1 ') // find "file"|xargs perl -pi -e 's|old|new|g' fi

C++學習筆記--C語言模擬this指標

都知道,C++中類的成員變數和成員函式是分開儲存的,變數可以儲存在堆、棧、全域性區,而函式只能存在程式碼段,並且一個類只對應一套成員函式,那麼如何通過類物件呼叫成員函式呢? 答案是通過this指標,類物件將this指標傳遞給函式,所以函式能夠使用類物件的成員變數

[C#學習筆記]C#中的decimal類型——《CLR via C#》

cep str flow ron 速度慢 加減 tro ima 操作符重載 System.Decimal是非常特殊的類型。在CLR中,Decimal類型不是基元類型。這就意味著CLR沒有知道如何處理Decimal的IL指令。 在文檔中查看Decimal類型,可以看到