社区
C语言
帖子详情
可变长数组在c里面怎样定义?
glock18
2004-09-04 01:29:58
比如想写下面一段程序:
void test(int i, int j)
{
int Array1[i];
double Array2[j];
}
在支持c99的编译器如gcc下可以编译通过,但是有些编译器就不行了,不知道那位知道有什么解决办法?
谢谢!
...全文
498
20
打赏
收藏
可变长数组在c里面怎样定义?
比如想写下面一段程序: void test(int i, int j) { int Array1[i]; double Array2[j]; } 在支持c99的编译器如gcc下可以编译通过,但是有些编译器就不行了,不知道那位知道有什么解决办法? 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
短歌如风
2004-09-06
打赏
举报
回复
“变长数组”是C99新增加的特性,很多编译器都不支持的。要想让你的代码可以在多种编译器中编译的话,还是先不要使用。
我觉得“变长数组”其时并没有很重大的意义,与Pascal中的“动态数组”相比功能太弱,也没有什么优点。其时在C中“数组”一直不能算作一个完整的类型,如果C标准在数组方面作一些大的改进会更有好处。
yangki
2004-09-06
打赏
举报
回复
循环free
ruidiisy
2004-09-06
打赏
举报
回复
free(Array[i])
glock18
2004-09-06
打赏
举报
回复
int **Array = (int**) malloc(i*sizeof(int*));
*Array(i) = (int*) malloc(i*sizeof(int));
如果是这种写法的话,那么释放内存的话是怎么样的呢?
free(Array)就行了吗?
nicewinds
2004-09-05
打赏
举报
回复
free(Array1) ;
free(Array2) ;
glock18
2004-09-05
打赏
举报
回复
我改完程序后编译出现了如下错误:
INTERNAL ERROR:register allocation failed....
这个错误是不是和申请的内存没有释放有关系?
ypengfei
2004-09-05
打赏
举报
回复
int* Array1=(int*)malloc(sizeof(int)*i*2);
double* Array2=(double*)malloc(sizeof(double)*j*2);
这里这样可以似乎也可以定义出二维数组,因为数组内存地址是连续分配的……
oldjackyone
2004-09-04
打赏
举报
回复
默默无语...
daryl715
2004-09-04
打赏
举报
回复
用vc好些
NDXo
2004-09-04
打赏
举报
回复
比如想写下面一段程序:
void test(int i, int j)
{
int Array1[i];
double Array2[j];
}
在支持c99的编译器如gcc下可以编译通过,但是有些编译器就不行了,不知道那位知道有什么解决办法?
熊主任
2004-09-04
打赏
举报
回复
动态数组是GNU C对ANSI C做出的扩展,对于不支持的编译器只能用动态分配了。
glock18
2004-09-04
打赏
举报
回复
不过这条语句*Array(i) = (int*) malloc(i*sizeof(int));里面Array[i]前的*是不是应该去掉?
glock18
2004-09-04
打赏
举报
回复
不错的方法,谢谢了!!!
goodluckyxl
2004-09-04
打赏
举报
回复
int *Array1[2];
Array[1] = (int*) malloc( i*sizeof(int) );
///////
int **Array = (int**) malloc(i*sizeof(int*));
*Array(i) = (int*) malloc(i*sizeof(int));
glock18
2004-09-04
打赏
举报
回复
上面的问题解决了,可是如果数组是二维以上的话那该如何定义呢?
void test(int i, int j)
{
int Array1[2][i];
double Array2[i][j];
}
如果是这种情况的话,我不太清楚具体的写法了,晕,基础太差了...
hewittlee
2004-09-04
打赏
举报
回复
malloc 动态分配内存
realloc 追加分配
nicknide
2004-09-04
打赏
举报
回复
晕,这个没有什么可以恍然大悟吧?这个是最最基本的东西了啊……
楼主还要继续努力学习……
glock18
2004-09-04
打赏
举报
回复
原来可以这样,恍然大悟,谢谢了!!!
goodluckyxl
2004-09-04
打赏
举报
回复
malloc 函数是c动态分配内存函数]
realloc可以追加分配
用完记得free掉
lemon520
2004-09-04
打赏
举报
回复
int* Array1=(int*)malloc(sizeof(int)*i);
double* Array2=(double*)malloc(sizeof(double)*j);
柔性数组成员
在传统的C语言编程中,处理可变长度的数据通常涉及到指针的操作以及额外的内存管理,而柔性数组成员则简化了这一过程。 #### 二、基本概念 柔性数组成员是一种特殊的数组类型,它可以被声明为结构体中最后一个成员...
javascript的数组和常用函数详解
1.认识数组 数组就是某类数据的集合,数据类型可以是整型、字符串、甚至是对象。Javascript不支持多维数组,...以下代码
定义
了个可变数组,并进行赋值。 代码如下:var a = new Array();a[0] = 10;a[1] = “aaa”;a[2
c语言教程pdf
- **C99**:增加了对64位计算的支持,并引入了一些新的特性,如复合文字(compound literals)和
变长数组
(variable length arrays)。 - **C11**:进一步增强了语言的性能和安全性,加入了多线程支持等功能。 **...
浅谈golang slice 切片原理
slice总是指向一个底层array,slice的声明也可以像array一样,只是不需要长度,它是可变长的,可以随时往slice
里面
加数据。 初看起来,数组切片就像一个指向数组的指针,实际上它拥有自己的数据结构,而不仅仅是个...
浅谈c语言数组及可
变长数组
C99中,程序员声明数组时,数组的维数可以由任一有效的整型表达式确定,包括只在运行时才能确定其值的表达式,这类数组就叫做可
变长数组
,但是只有局部数组才可以是变长的.可
变长数组
的维数在数组生存期内是不变的,也...
C语言
70,020
社区成员
243,265
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章