陣列主要用來處理一系列同型別的資料集合,在c/c++中應用十分廣泛。其中有兩種特殊的陣列,變長陣列(vla)和可伸縮型陣列成員,應用得當的話,會非常方便。
##變長陣列(vla)
在多維陣列中,陣列的行可以在函式呼叫時傳遞,但是陣列的列一般在函式內部定義。
如下所示:
#define cols 4
int sum2dim ( int a[cols],int rows )
使用格式:
struct flex *pf
pf= malloc (sizeof( struct flex) + 5 * sizeof( double);
pf -> count = 5;
pf -> sco[2]=18.5;
for (i=0;i < 5; i++)
用指標來訪問伸縮型陣列和普通陣列一樣。
變長陣列和伸縮型陣列成員都是在呼叫的時候確定陣列的大小,分配空間,可以節省記憶體。
alloca 和 變長陣列(VLA)
alloca 是gnu libc中的記憶體分配函式。void func 一般來說,alloca 的記憶體是在呼叫alloca的函式func 的棧上分配的,當func 返回或者異常退出的時候,分配的記憶體或自動釋放。以上說的是一般的情況。下面說說不一般的情況 在hp ux 系統上時,或者在其他的一些系...
多維陣列 陣列指標 函式 變長陣列VLA
include define cls 2 define row 2 這三種形式等價 int sum 2 int cls int int sum 2 int cls int intsum 2 int a cls int n 這三種形式等價 int sum 3 int cls row int int s...
C99中的變長陣列(VLA)
處理二維陣列的函式有一處可能不太容易理解,陣列的行可以在函式呼叫的時候傳遞,但是陣列的列卻只能被預置在函式內部。例如下面這樣的定義 define cols 4 int sum3d int ar cols int rows 現在假定了如下的陣列 int array1 5 4 int array2 10...