基於C C 的二維動態陣列構建

2021-09-30 01:29:47 字數 1558 閱讀 1573

本文對c/c++中構建二維動態陣列的方法進行了總結,主要使用了malloc,calloc,new三種函式。二維動態陣列相當於每個元素為乙個指標的一維陣列,這個一維陣列就是行;每個指標又指向乙個儲存空間,這個儲存空間就是每一列。再通過使用malloc,calloc,new等函式為每個元素動態分配空間,就實現了二維動態陣列。

malloc函式的原型宣告為

void *malloc(unsigned int size);

malloc申請了size大小的儲存空間,返回了乙個指向該空間的通用指標(通用指標即為可以指向任何基型別)。由於malloc本身沒有確定儲存的資料型別,所以在使用的時候需要進行強制型別轉換,即(char *)

char **p是定義了乙個二級指標,即p是乙個指標,它指向的儲存空間存放了乙個指向char型別的指標。

先給行陣列分配記憶體

char **p=(char **)malloc(sizeof(char *)*size)

陣列中的元素型別是二級指標p,即char **p。

分配到的記憶體長度則為行數size乘以每個元素的大小。這裡的元素是指標,即元素長度為位址長度。*是乘還是解引用運算子由編譯器自己判別。

#include

"stdafx.h"

#include

"stdlib.h"

intmain()

//二維陣列賦值

for(i=

0;i)//輸出二維陣列

calloc的函式原型宣告

void *calloc (unsigned int num,unsigned int size);

#include

"stdafx.h"

#include

"stdlib.h"

intmain()

//二維陣列賦值

for(i=

0;i//輸出陣列值

//為二維陣列賦值和輸出

c c 動態申請一維,二維陣列

指標變數名 new 型別名 下標表示式 下標表示式 不是常量表示式,即它的值不必在編譯時確定,可以在執行時確定。這就是堆的乙個非常顯著的特點,有的時候程式設計師本身都不知道要申請能夠多少記憶體的時候,堆就變的格外有用。1.動態申請一維陣列 int p new int n if p null retu...

C C 二維陣列

已知在c c 中當陣列作為函式的引數進行傳遞時,該陣列自動退化為同型別的指標。1 二維陣列的概念 在c語言中,二維陣列實際上是一種特殊的一維陣列,它的每個元素也是乙個一維陣列。因此,二維陣列下標形式正確寫法如下 int arrays i j 2 二維陣列作為函式引數 傳遞陣列時必須讓編譯器知道陣列最...

二維動態陣列

之前都是寫的小程式,一直用的靜態陣列,也沒出現問題。可是,最近碰到大型程式和工程,這時就要用動態陣列了。因為靜態陣列時儲存在棧中的,而動態陣列儲存在堆中。計算機的棧只有1m大小,而堆可以理論上達到計算機記憶體大小,可見當大型工程資料量非常大時,必須使用動態陣列了。c 的動態陣列的建立和刪除要用到ne...