C 使用new建立二維陣列

2021-10-01 04:53:37 字數 1085 閱讀 4895

#include using namespace std;

void main()

以上是一般的程式,需要注意的是,記憶體空間的劃分是5行10列,但是p的維度是按照列,而不是按照行宣告的。

在自己編寫benchmark,執行在cpu上時,預期是宣告16*128的陣列,這樣每行是128*4 (因為int 4byte)= 512 byte。通過每次間隔128byte讀取,喚醒prefetch機制。

但是一開始錯誤的宣告為了new int [128][16],這樣第一次讀取[32][0],第二次讀取[64][0],並不是間隔32*4byte,而是間隔32*4*16=2k的空間。

一維陣列

靜態 int array[100];   定義了陣列array,並未對陣列進行初始化

靜態 int array[100] = ;  定義並初始化了陣列array

動態 int* array = new int[100];  delete array;  分配了長度為100的陣列array 

動態 int* array = new int[100];  delete array; 為長度為100的陣列array初始化前兩個元素

二維陣列

靜態 int array[10][10];  定義了陣列,並未初始化

靜態 int array[10][10] = , };  陣列初始化了array[0][0,1]及array[1][0,1]

動態 int (*array)[n] = new int[m][n]; delete array;  // in c++11: auto array = new int[m][n]

動態 int** array = new int*[m]; for(i) array[i] = new int[n];  for(i) delete array[i]; delete array;    多次析構

動態 int* array = new int[m*n];  delete array;      陣列按行儲存

注意這種方式不可用: int **array = new int[m][n];

new 二維陣列

定義二維陣列char array x y 1.只定義個一維的就可以了 char array array new char x y 訪問的時候 array i y j 表示array i j 2.定義乙個二維陣列 char array1 array1 new char x for i 0 i arra...

C 用new建立二維陣列的方法

問題 在c 中,陣列可以被視為一種型別 但是,不存在 二維陣列 這種型別。二維陣列本身會被解釋成乙個一維陣列 這個陣列的元素型別為另一種一維陣列。比如int 2 3 這個二維陣列,它會被編譯器視作乙個元素型別為 int 3 的一維陣列。並且,int 3 和 int 4 會被當成不同的資料型別。假設a...

C 用new建立二維陣列的方法

方法一 使用常量 接上 如果將b 即列數 指定為乙個常量,例如new int a 3 其實質與new int a 建立乙個動態陣列並無多大區別 只是元素型別由int變為了 int 3 而已。示例 用這個方法來建立二維陣列,比較直觀 易用,但它最大的限制在於 你必須在編譯時確定b的大小 int mai...