日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C/C++之变长数组(VLA)和可伸缩型数组成员

發布時間:2025/6/17 c/c++ 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/C++之变长数组(VLA)和可伸缩型数组成员 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數組主要用來處理一系列同類型的數據集合,在C/C++中應用十分廣泛。其中有兩種特殊的數組,變長數組(VLA)和可伸縮型數組成員,應用得當的話,會非常方便。
##變長數組(VLA)
在多維數組中,數組的行可以在函數調用時傳遞,但是數組的列一般在函數內部定義。
如下所示:

#define COLS 4 int sum2dim ( int a[][COLS],int rows ) {int r;int cint tol=0;for (r=0; c<rows; r++)for (c=0; c<COLS; c++)tol+=ar[r][c];return tol; }

這種函數只能處理固定列的數組,要想處理任意行、任意列的數組,就需要用到變長數組(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 {int count;double ave;double sco[]; }

使用格式:

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)和可伸缩型数组成员的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。