C中不定长数组的使用

tt posted @ 2007年8月07日 15:53 in C语言编程 , 9429 阅读

在Linux系统中,使用c时可以定义不定长数组,比如:

  1. int n;
  2. n=5;
  3. double arr[n];
  4. printf("%d\n", sizeof(arr));

可以实现定义一个长度为5的数组,输出结果为40,说明数组大小为40个字节。

虽然可以用,但是我仍然建议不要这么用,在使用习惯了动态内存分配后,对其使用感到踏实,由于不知道其机理,而对这种新方式总感觉不太放心。我建议仍然使用下面的方式定义变长数组:

  1. int n;
  2. n=5;
  3. double *arr=NULL;
  4. arr = malloc(n*sizeof(double));

Avatar_small
LiYanrui 说:
2008年4月09日 00:19 C 的变长数组是在 c99 中实现的,虽然 c99 还未被主流编译器完全支持,但只要你写的程序对 c90 或 gnu c 没有特殊依赖,完全可以使用 c99。
Avatar_small
LiYanrui 说:
2008年4月09日 00:21 如果感兴趣,可以读读 http://www.ibm.com/developerworks/cn/linux/l-c99/index.html

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter