C/C++之变长数组(VAL)和可伸缩型数组成员
来源:互联网 发布:外籍模特知乎 编辑:程序博客网 时间:2024/05/17 20:29
数组主要用来处理一系列同类型的数据集合,在C/C++中应用十分广泛。其中有两种特殊的数组,变长数组(VAL)和可伸缩型数组成员,应用得当的话,会非常方便。
变长数组(VAL)
在多维数组中,数组的行可以在函数调用时传递,但是数组的列一般在函数内部定义。
如下所示:
#define COLS 4int sum2dim ( int a[][COLS],int rows ) { int r; int c int tol=0; for (r=0; c<rows; r++) for (c=0; c<COLS; c++) tol+=ar[r][c]; return tol;}
这种函数只能处理固定列的数组,要想处理任意行、任意列的数组,就需要用到变长数组(VAL)。但是变长数组必须在函数内部或者作为函数参数使用,它的维数大小都可以用变量来表示。
函数的定义如下:
#define COLS 4int sum2dim ( int rows, int cols, int a[rows][cols] ) { int r; int c int 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 *pfpf= 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;}
用指针来访问伸缩型数组和普通数组一样。
变长数组和伸缩型数组成员都是在调用的时候确定数组的大小,分配空间,可以节省内存。
0 0
- C/C++之变长数组(VAL)和可伸缩型数组成员
- C语言——伸缩型数组成员
- C语言变长数组
- C语言变长数组
- c语言变长数组
- C 中的变长数组
- C语言变长数组
- 变长数组 C
- c 变长数组
- C语言变长数组
- C语言变长数组之剖析
- C语言变长数组之剖析
- 结构体的可伸缩型数组成员
- [C] 结构体中的伸缩型数组成员——《C Primer Plus》
- 例解GNU C之零长数组与变长数组
- 例解GNU C之零长数组与变长数组
- 例解GNU C之零长数组与变长数组
- 例解GNU C之零长数组与变长数组
- c内存管理--内存容量
- response.sendRedirect()与request.getRequestDispatcher().forward()区别
- ReactiveCocoa之RAC宏展开解析【iOS源码阅读】
- 异步Future模式理解及实现案例
- Android布局分析的两种方式
- C/C++之变长数组(VAL)和可伸缩型数组成员
- Red Hat 系列的Linux环境变量的修改(永久,暂时)
- RequestDispatcher的使用
- 三大基础排序算法java实现
- 购物单
- FragmentTabHost简单的主流引用
- 图片搜索比较
- 利用状态模式CSV文件序列化
- 麦子学院-Web前端开发工程师系列培训教程