本文主要是介绍C语言中的变长数组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
学过C语言和C++的人都知道,我们在定义数组时用的都是整型的常量,那么大家有这样去定义过一个数组吗?
#include <stdio.h>
int main(int argc, char **argv)
{int c, d,i,j;scanf("%d %d",&c,&d);int m[c][d];for(i = 0;i < c;i++)for(j = 0;j < d;j++)m[i][j] = 1;for(i = 0;i < c;i++)for(j = 0;j < d;j++)printf("%d ",m[i][j]);}
这个程序在C语言的编辑器上是可以运行的,前提是你的编辑器必须是C99标准。
但是我们通常都不用这种情况去定义一个数组,主要还是它和普通的数组比起来有一定的局限性。
1.变长数组必须是自动存储类的,这意味着它必须在函数内部或者作为函数参量声明。
2.变长数组在定义时不允许被初始化。
变长数组中的“变”并不表示在创建数组后可以修改其大小。变长数组的大小在创建后就不允许改变了。“变”的意思是说其维大小可以用变量来指定。
声明一个二维变长数组的函数:
int sum(int rows,int cols,int a[rows][cols]);
注意:
下面这种声明是错误的:
int sum(int a[rows][cols],int rows,int cols);
C99标准规定可以省略函数原型中的名称,但需要用星号代替省略的维数。
int sum(int,int,int a[] []);
总结:正常情况下一般还是用我们习惯上的数组为准。
这篇关于C语言中的变长数组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!