设为首页 加入收藏

TOP

C语言变长数组
2013-01-13 10:59:15 来源: 作者: 【 】 浏览:460
Tags:语言

  我们知道,传统的C语言是不能像C++(www.cppentry.com)那样支持变长数组的,也就是说数组的长度是在编译期就确定下来的,不能在运行期改变。C99标准定义的C语言新特性,新增的一项功能可以允许在C语言中使用变长数组。

  C99 gives C programmers the ability to use variable length arrays, which are arrays whose sizes are not known until run time. A variable length array declaration is like a fixed array declaration except that the array size is specified by a non-constant expression. When the declaration is encountered, the size expression is evaluated and the array is created with the indicated length, which must be a positive integer. Once created, variable length array cannot change in length. Elements in the array can be accessed up to the allocated length; accessing elements beyond that length results in undefined behavior. There is no check required for such out-of-range accesses. The array is destroyed when the block containing the declaration completes. Each time the block is started, a new array is allocated.

  以上就是C99标准对C语言变长数组的说明。

  C语变长数组,测试所用的源代码很简单,如下所示:

  1.//文件名:dynarray.c

  2.//编译环境: bloodshed dev-c/c++ 4.9

  3.#include <stdio.h>

  4.#define bzero(b,len) (memset((b), '/0', (len)), (void) 0)

  5.

  6.

  7.int main(int argc, char *argv[])

  8.{

  9.

  10.  int i, n;

  11.

  12.  n = atoi(argv );

  13.

  14.  char arr[n+1];

  15.

  16.  bzero(arr, (n+1) * sizeof(char));

  17.

  18.

  19.  for (i = 0; i < n; i++) {

  20.

  21.    arr[i] = (char)('A' + i);

  22.

  23.  }

  24.

  25.  arr[n] = '/0';

  26.

  27.  printf("%s/n", arr);

  28.

  29.

  30.  getchar();

  31.  return (0);

  32.

  33.

  34. }

  上述程序名为dynarray.c,其工作是把参数argv 的值n加上1作为变长数组arr的长度,变长数组arr的类型为char.然后向数组中写入一些字符,并将写入的字符串输出。

  在支持c99标准的IDE上编译后, 在命令提示符下,运行:

  c:/c99_test/dynarray.exe 6

  将输出:

  ABCDEF

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇排序算法系列:基数排序 下一篇C宏定义的小结

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: