变长数组

来源:互联网 发布:c语言long是什么意思 编辑:程序博客网 时间:2024/05/01 12:52

  在   C89   和   C++   中,   一个数组的尺寸必须是一个整型常量表达式以便于在编译时计算大小.   在   C99   中,   最新的   ANSI/ISO   C   标准,   该规则被放松了   --   你现在可以使用任何整数表达式定义一个数组的长度:   

   
  int   func(int   dim)  
  {  
  int   arr[dim];   /*possible   only   in   C99*/  
  }  
   
  这个元素个数可以在每一次函数调用时修改,   这样他的长度只有在运行时可以计算.   这样的数组称之为变长数组:  
   
  int   main()  
  {  
  int   dim;  
  printf("enter   array's   size:   ");  
  scanf("%d",&dim);  
  func(dim);  
  }  
   
  要支持变长数组,   C99   修改了   sizeof   操作符的机制.   通常,   sizeof   表达式在编译时进行计算,   但是当作用于变长数组时,   结果需要在运行时计算.  
   
  记住变长数组不是动态数组   --   它们不在生命周期中修改长度.   它们和普通数组的不同之处在于可以在每次实例化是定义不同长度.   变长数组只能是本地的.   注意,   标准   C++   不支持变长数组.   因为很多   C++   编译器也是   C   编译器,   它们中的一些可能支持这种特性作为一个非标准扩展.