如何声明可变长度的数组 C语言

书上的原代码:void scalarMultiply (int nRows, int nCols,int matrix[nRows][nCols],int scalar);

报错说:rror: `nRows' undeclared (first use this
function)

请高人指点下吧 如果允许 请顺便写下正确的声明方式。。 谢谢

C99允许用变量做数组下标,也就是可以声明可变长度的数组,但是据我所知,目前还没有C99标准的编译器!VC也不是。但你可以用一个宏定义做嘛,改的时候改宏定义那一个地方就可以了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-10-15
书上是什么代码啊?晕死。
变长数组是C99标准。最新的编译器已经可以执行。
如下面的语句:
int n = 3;
int a[n];
或如
int n;
scanf("%d",&n);
int a[n];
这都是变长数组。
第2个回答  2008-10-16
如果实在需要,你就声明个大的,如nRows=1000;不过用指针可以解决这个问题
第3个回答  2008-10-16
可变长度数组一直以来就是C的难题,c++中封装的类也是用链表实现的,效率不高;你可以考虑使用稀数数组,节省空间!

C语言可变长数组在GCC编译器中的实现
因为数组依靠在程序运行时动态的调整esp来分配空间,所以这种类型的数组只能够定义在栈内,不能够定义在数据段上(全局数组,静态数组)。代码#include stdio.h#include stdlib.hint main(){unsigned int size;scanf("%d",size);int var[size]; \/\/定义变长数组if(size == 0){printf("empty array\\n...

如何声明可变长度的数组 C语言
C99允许用变量做数组下标,也就是可以声明可变长度的数组,但是据我所知,目前还没有C99标准的编译器!VC也不是。但你可以用一个宏定义做嘛,改的时候改宏定义那一个地方就可以了。

c语言中长度可变的数组?
void func( int n ){int vla[2*n]; \/\/ 合法:存储周期为动态的static int e[n]; \/\/ 非法:长度可变数组不可有静态存储周期 struct S { int f[n]; }; \/\/ 非法:f不是一个普通标识符\/* ... *\/}

关于在C语言 声明带有一个变长数组参数的函数
1 直接以定长数组做参数,声明形式为:ret_type func(int a[100]);这里就是以100个元素的数组做参数的。2 声明时不带长度,即:ret_type func(int a[]);3 以指针替代数组,即:ret_type func(int *a);2,3两种均可以用于变长数组。不过这种情况下,需要与函数约定数组长度的确定方法,比如约定规模 ,约定结束...

C语言 可变长数组
你第一种写法:int n=1, a[n], i=0, j=0, k=0;这里你已经定义n = 1, 而a[n]也在该行定义。那么编译器在此就直接给a这个数列分配内存了。也就是说你a这个数组大小就确定了,即为1。我不知道你学了内存分配没有,简单给你讲解一下,具体你可以在网上搜。比如一个含有5个整数类型的...

C语言怎样定义变长数组
”变长数组“确实是有的,是在C99标准才出现的。题主的写法没有错。变长指的就是可以用变量指定数组大小,而不是说数组大小可以在runtime改变。(”变长“这个这个翻译很怪啊...)写全的话应该是 int x = 2; \/\/x定义并赋值,当然不一定是2char array[x];测试了一下,这样的代码在VC6....

c51单片机,如何定义可变长数组?
用int定义长数组是16位的,没有问题的,可以定义的,也没有限制的。下面的程序是定义了30元素的。用单步执行来查看数组的值,用P1口显示高8位,用P0显示低8位,即可以赋值,也可以输出值的,没有问题,这个程序测试通过的。include <reg52.h> int number[30];unsigned char i;void main(){ for...

C语言实现一个可变长的二维数组
int main(int argc, char* argv[]){ int a;printf("请输入行数:");scanf("%d",&a);int **p=new int*[a];int *n=new int[a];for (int i=1;i<=a;i++){ printf("请输入第%d行元素的个数:",i);scanf("%d",&n[i-1]);printf("\\n");int q=n[i-1];p[i-1]=new...

C语言怎么自定义数组长度。
动态分配的数组可以自定义数组的长度,示例如下:include <stdio.h> include <string.h> include <stdlib.h> int main(){ printf("输入要分配的内存大小:");int size;scanf("%d", &size); \/\/输入自定义的数组长度 int *pstart = (int *)malloc(sizeof(int) *size);if (pstart==0) {...

变长数组简介
在C语言的历史中,早期版本在声明数组时,数组大小的定义受到限制,只能是整数常量。然而,这种状况在C99标准引入后发生了显著变化。C99允许数组的大小通过整形变量或表达式来决定,这种特性被称为变长数组(variable-length array,简称VLA)。例如,当我们在程序中运行时获取输入的整数n:int n;scanf ("...

相似回答