C语言中数组长度不能用变量定义吗? C语言里,所有变量空间都2113是在程序运行之初向系5261统申请的,包括指针,除了一4102些动态申请1653方式如malloc函数。没有申请的空间系统是不允许读写的。那么如果一个数组大小是变量定义,则在程序运行前不能确定数组大小,也就无法申请,故不允许。所以,解决的办法便是通过malloc函数,即int a[n];可改为int*const a=(int*)malloc(sizeof(int)*n);这样a变量就完全可以当作一个数组直接使用了,包括a[1]之类的。因为“[]”中括号运算符做的只是偏移其内的地址数并取值。如:a[1]等价于(a+1)而const修饰符在星号之后,则表示指针在被声明后不能改变,即只能指向这个获取的空间,完全符合数组的性质综上所述,如果需要变量控制长度的一个数组,类似“int a[n];的,可改成“int*const a=(int*)malloc(sizeof(int)*n);并直接作为数组以[]方式使用。const可以去掉,但要保证使用时不改变a的指向
C++怎么在定义数组的时候指定数组长度为变量 数组无法使用数组长度为变量。但是你可以用数组的替代品,Vector。Vector类似于动态数组,你可以使用变量也可以不定义长度,而直接添加,它会自己改变长度。
C语言中数组长度能使用变量定义吗? 1、C语言中不支持。C++中支持变长数组(你可以自行度娘变长数组和alloca函数),但是因为其实在栈上分配,不被推荐使用。做为解决方案,你可以使用C式的malloc函数或者C++式的new函数来在堆上动态分配内存,这样长度是完全可以自定的。2、C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。3、在数组一章中,曾介绍过数组的长度是预先定义好的,在整个程序中固定不变。C语言中不允许动态数组类型。例如:int n;scanf(\"%d\",&n);int a[n];用变量表示长度,想对数组的大小作动态说明,这是错误的。但是在实际的编程中,往往会发生这种情况,即所需的内存空间取决于实际输入的数据,而无法预先确定。对于这种问题,用数组的办法很难解决。4、为了解决上述问题,C语言提供了一些内存管理函数,这些内存管理函数可以按需要动态地分配内存空间,也可。
C语言中数组长度不能用变量定义吗? C语言里,所有变量空间都是在程序运行之初向系统申请的,包括指针,除了一些动态申请方式如malloc函数。没有申请的空间系统是不允许读写的。那么如果一个数组大小是变量。
数组长度为什么不能是变量 因为定义数组时,分配空间是需要一个固定的值,来确定你所申请的空间的大小。若int n=9;int a[n];这样使用,根据编译器的不同,不知道你是用的是什么编译器,编译可能会通过,但是那个n始终是个变量,若n的值改变,则数组大小也会改变,在对其使用的时候就会使用到数组以外的内容,对程序会造成隐患,基本是不会让你编译通过的。所以,只能固定的申请a[9];亲,记得给好评!
C++ 用输入的变量作为数组长度是坏习惯吗?
C语言中可以定义不定长度的数组(即数组长度由变量确定)吗? malloc