c99数组长度规定

原创 2007年09月20日 14:27:00
c99规定数组长度可以为变量,下面的代码合法:
int x ;
int array[x]

标准c++的规定不允许这样(没有具体查,多半我也看不懂c++的标准....)但gcc上面是允许的。
在这种情况下,gcc会调用alloca在栈上分配数据空间,alloca的manual如下:

NAME
       alloca - memory allocator

SYNOPSIS
       #include <alloca.h>

       void *alloca(size_t size);

DESCRIPTION
       The alloca function allocates size bytes of space in the stack frame of
       the caller.  This temporary space is automatically freed when the func-
       tion that called alloca returns to its caller.

RETURN VALUE
       The alloca function returns a pointer to the beginning of the allocated
       space.  If the allocation causes stack overflow, program  behaviour  is
       undefined.

C99中变长数组的内存分配策略

在C99中新加入了对变长数组的支持,也就是说数组的长度可以由变量来定义。 对于下面的代码: int main() {      int n;      scanf("%d", &n); ...
  • a627088424
  • a627088424
  • 2013年10月17日 11:50
  • 1469

C99灵活数组-incompleted array

最近看ucc源码,在类型子系统中有一个类型RecordType(记录结构,包括union和struct),这个结构中有一个hasFlexArra域,文档指出是用于标识是否含有灵活数组 灵活数组是添加...
  • zhccl
  • zhccl
  • 2012年08月07日 00:27
  • 2630

第九章 C99可变长数组VLA详解

http://blog.csdn.net/code_crash/article/details/4854921 [置顶] 第九章 C99可变长数组VLA详解 分类: 数组与指针的艺术2009-...
  • wangyin159
  • wangyin159
  • 2014年08月07日 21:50
  • 1953

可变长数组

最近项目中需要目录遍历,把遍历到的文件/文件夹保存到数据结构中,其他模块根据索引找对对应的文件名和路径 实现如下: 1 2 3 4 5 6 7 8 9 10...
  • anyliwu
  • anyliwu
  • 2016年09月30日 16:10
  • 137

c99之 柔性数组成员

在讲述柔性数组成员之前,首先要介绍一下不完整类型(incomplete type)。不完整类型是这样一种类型,它缺乏足够的信息例如长度去描述一个完整的对象。6.2.5 Typesincomplete ...
  • zhangboyj
  • zhangboyj
  • 2011年03月08日 17:19
  • 2485

求C++数组长度问题

今天写代码的时候突然发现个问题,有类似这样一个函数,数组作为参数 void FormHead::ShowNum(intnumOfBoth[]) {          if(curMapId== ...
  • u012999985
  • u012999985
  • 2016年01月19日 20:53
  • 967

C99数据类型

【注意】 C标准没有具体规定各种类型数据占用存储单元的长度,这是由各编译系统自行决定的。≥ C标准只要求long型数据长度不短于int型,short型不长于int型。即sizeof(short)≤...
  • duyiwuer2009
  • duyiwuer2009
  • 2012年08月15日 13:29
  • 1471

数组

数组名是指针常量,保存的是首元素的地址,不能做自加。 数组最好是不要用变量动态定义的,即当你输入的字符个数不确定时,就想先定义一个变量,然后把它传给数组作他的长度。因为这是依赖于编译器支持的...
  • meowgi
  • meowgi
  • 2016年12月06日 20:51
  • 247

可变长的数组

随着输入数据的增加,数组大小动态增长。 #include using namespace std; int *growArray(int* p_values, int cur_size); i...
  • lionpku
  • lionpku
  • 2015年03月16日 15:40
  • 407

各编译器对C99的支持

在审一本C语言教材时,涉及到各编译器对C99的支持,于是Google了一番。 这篇文章是总结得比较全面的。不过其中对Borland编译器的说明已经过时。C++BuilderX已经全面支持C99了。用 ...
  • turingbook
  • turingbook
  • 2006年06月27日 17:10
  • 25409
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c99数组长度规定
举报原因:
原因补充:

(最多只允许输入30个字)