没有申请的空间系统是不允许读写的。那么如果一个数组大小是变量定义,则在程序运行前不能确定数组大小,也就无法申请,故不允许。所以,解决的办法便是通过malloc函数,即 int a[n]; 可改为 int* const a = (int*)malloc(sizeof(int)n); 这样a变量就完全可以当作一个数组直接使用了,包括a[1]之类的。因为“...
C语言中数组定义长度的时候只能用整形常量,不能用整形变量。 原因在于c语言中所有变量空间都是在程序运行之初向系统申请的,包括指针、数组(除了一些动态申请方式如malloc函数),没有申请的空间系统是不允许读写的。也就是说,在程序运行之初,输入操作之前,定义的数组就先要向系统申请自身大小的空间,如果此时数组的大小...
例如 int val = 5;int a[val];变长数组中的变,也只是说你可以用变量去定义数组,但是变长数组的...
别说C了,C++、C#的数组都不能改大小,可C++有STL,C#有.NET Framework里的各种Container,C只是没有...
int a[n];这样做是可以的。因为宏定义只是简单的替换,c语言定义数组必须指定其长度,所以不能是变量...
这是错误的。 C中有 变长数组 的概念呀(c99标准),“变长”的意思就是 可以用变量来指定数组的长度,而数组一旦创建 长度就无法变化了,而且变量必须赋值在先,变长数组才能创建。某些人不能因为无法正确的设置编译器支持c99标准,而否定了 变长数组 这个用法。
我有个疑问,为什么变..我有个疑问,为什么变量在定义的时候不能作为数组的长度,我可以理解为一句话没有执行完,变量没有分配内存空间。但是变量在定义的时候可以作为值赋给另外一个变量。这是为什么?求解答。(上代码错误,下代码正确)
c语言中不可以用变量定义数组的个数。可以使用mallo函数 mallo函数返回的实际是一个无类型指针,必须在其前面加上指针类型强制转换才可以使用;指针自身=(指针类型*)malloc(sizeof(指针类型)*数据数量);int*p=NULL;intn=10;p=(int*)malloc(sizeof(int)*n);...
纯C编译器是不允许用变量定义数组长度的,编译都过不了。而后来的有些C++的编译器允许这样做的,但大多数用来做定义数组长度的变量要用const修饰,叫值不变变量,但纯C编译器即使用const修饰的变量也不允许用来定义数组长度。你说的“C和C++”都是允许的可能是你的编译器是C++兼容C的,时下纯C编译...