C/C++之变长数组(VLA)和可伸缩型数组成员
生活随笔
收集整理的這篇文章主要介紹了
C/C++之变长数组(VLA)和可伸缩型数组成员
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數組主要用來處理一系列同類型的數據集合,在C/C++中應用十分廣泛。其中有兩種特殊的數組,變長數組(VLA)和可伸縮型數組成員,應用得當的話,會非常方便。
##變長數組(VLA)
在多維數組中,數組的行可以在函數調用時傳遞,但是數組的列一般在函數內部定義。
如下所示:
這種函數只能處理固定列的數組,要想處理任意行、任意列的數組,就需要用到變長數組(VLA)。但是變長數組必須在函數內部或者作為函數參數使用,它的維數大小都可以用變量來表示。
函數的定義如下:
#define COLS 4 int sum2dim ( int rows, int cols, int a[rows][cols] ) {int r;int cint tol=0;for (r=0; c<rows; r++)for (c=0; c<cols; c++)tol+=ar[r][c];return tol; }##可伸縮型數組成員
可伸縮型數組成員在聲明時不會分配內存空間,也不能直接使用。
聲明規則:
- 伸縮型數組成員必須是最后一個數組成員
- 機構中必須至少有一個其他成員
- 聲明格式和普通數組一樣,除了它的方括號內是空的
使用格式:
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++) {pf -> sco[i] = 20.0-i; }用指針來訪問伸縮型數組和普通數組一樣。
變長數組和伸縮型數組成員都是在調用的時候確定數組的大小,分配空間,可以節省內存。
總結
以上是生活随笔為你收集整理的C/C++之变长数组(VLA)和可伸缩型数组成员的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Matlab Robotic Toolb
- 下一篇: C/C++之动态分配内存