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.break與return0、常用函式的用法
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類型,可以看到