百度
360搜索
搜狗搜索

数组长度可以是变量吗,vs如何可以让变量作为数组长度详细介绍

本文目录一览: 数组长度为什么不能是变量?

数组的大小不能用变量表示的,是因为在编译连接期间内存要按照你制定的长度给数组分配相应的内存空间,如果是变量的话就没有办法给它分配了,你可以用符号常量来解决,在开头用:
#definem100
#definen100然后在程序中就可以定义u[m][n]二维数组了,当不一定非要是100,可以是任何一个正整数。
C语言里,所有变量空间都是在程序运行之初向系统申请的,包括和指针,它也需要空间,除了一些动态申请方式如malloc函数。没有申请的空间系统是不允许读写的。那么如果一个数组大小是变量定义,则在程序运行前不能确定数组大小,也就无法申请,故不允许。解决的办法如前面所说,如:
inta[n];
可改为
int*consta=(int*)malloc(sizeof(int)*n);
这样a变量就完全可以当作一个数组直接使用了,包括a[1]之类的。因为“[]”中括号运算符做的只是偏移其内的地址数并取值。如:
a[1]
等价于
*(a+1)
而const修饰符在星号之后,则表示指针在被声明后不能改变,即只能指向这个获取的空间,完全符合数组的性质。

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语言提供了一些内存管理函数,这些内存管理函数可以按需要动态地分配内存空间, 也可把不再使用的空间回收待用,为有效地利用内存资源提供了手段。 其它文献中所提到的"动态数组",指的就是利用内存的申请和释放函数,在程序的运行过程中,根据实际需要指定数组的大小.其本质是一个指向数组的指针变量.常用的内存管理函数有以下三个:分配内存空间函数malloc;分配内存空间函数 calloc;释放内存空间函数free。

java中数组的长度可以用普通变量而不必须是常量是么???

// 可以传一个变量,new 的时候就可以创建 。
public class A
{
public int[] print(int len) {
return new int[len] ;
}
public static void main(String[] args) {
new A().print(5) ;
}
}
是的。
在Java中,可以使用变量定义数组。
int size=100;
int[] num = new int[size];
这是可以的;
但是在C/C++,这样是不可行的,除非加const

C语言数组长度可以是一个变量吗

不行,strlen只用于计算字符串的长度。可以定义一个变量,初值为0,数组中每存入一个数字,该变量增1。如:
int
num[100],
count
=
0;
num[0]
=
9;
++count;
由于在程序前端申请的数组的尺寸需要提交编译程序使用,所以无法根据具体运行时刻变量的值分配数组空间,所以必须是常量。
如果想用变量控制数组尺寸,可以用malloc动态申请内存作为数组空间。
不可以
因为不好编译
不过可以用malloc()申请一段堆内存
这个长度是可变的

在定义数组时,数组大小必须是常量,不能使变量或变量表达式?

C99标准前不支持可变长数组
C99标准开始才支持数组定义时使用变量
对于传统的 C 数组(C90),必须用常量表达式指明数组的大小。
C99/C11新增了变长数组,可以用变量表示数组大小。
声明一个简单的一维数组形式如下:
type name [ size ];
这里,type是数组中每个元素的数据类型,name是数组名,size是数组元素的个数。
对于传统的C数组,要求size是整型常量表达式。
但是C99/C11允许使用整型非常量表达式,这种情况下的数组被称为变长数组。

C语言中可以定义不定长度的数组(即数组长度由变量确定)吗?

可以使用指针,申请动态空间,完成这个操作,具体的东西,你可以查资料,或者看书,一般的C语言书上都有说明,而且肯定比我们讲的详细的多
数组下标只能是确定的数,不可以用数组
用指针可以,用的时候就申请内存空间
看看malloc他的用法
一维数组定义方式为: 类型说明符 数组名【常量表达式】,常量表达式可以包括常量和符号常量,但绝不能包含变量。换句话说,C语言中不允许对数组的大小做动态定义,即数组的大小不依赖程序运过程中变量值;如:
int n;
scanf("%d",&n);
int a[n];
这是不对的!!!!
有啊,可以看下动态分配内存空间
不可以,数组在创建时长度已经确定了,而且创建后也无法更改数组的长度,楼上说的malloc动态申请的内存也是已确定的,你都不能在 不破坏原有数据的情况下改变其大小。
那怎么储存未知大小的数据呢,在储存后怎样能随意的对其添加、更改、删除、查找等一系列操作呢?只用简单的数组肯定不行,需要用到别的数据结构,如链表、二叉树等等,总有一款适合你。在大家学到数据结构与算法的时候 ,一切难题都将迎刃而解。
最后补充一点,楼上有人说数组的长度不能用变量来确定,这是错误的。 C中有 变长数组 的概念呀(c99标准),“变长”的意思就是 可以用变量来指定数组的长度,而数组一旦创建 长度就无法变化了,而且变量必须赋值在先,变长数组才能创建。某些人不能因为无法正确的设置编译器支持c99标准,而否定了 变长数组 这个用法。

vs如何可以让变量作为数组长度

这是GUN C的九条扩展语法之一,支持用变量作为数组长度,只能在支持GUN C扩展语法的编译器中编译,同__FUNCTION__变量,不作为正式标准。
九条扩展语法分别是:
零\变量长度数组
case范围
语句表达式
typeof 关键字
可变参数宏
标号元素
FUNCTION__和__PRETTY_FUNCTION
attribute((ATTRIBUTE))
内建函数
这是C99标准的一个用法。
在使用g++或者clang++编译器的时候,可以使用;在VS或者VC6.0编译器的时候,会报错。所以采用g++或者clang++编译器判题的刷题网站上也支持这种写法。
总的来说,变量作为数组的长度是可行的。但是你要使用g++或者clang++编译器。

C语言中数组中的元素可以是变量吗?

可以,如下:polly@nowthen:~/test$ cat test.c#include

int main(void){ int a=1, b=2, c=3, d=4; int arr[4] = {a, b, c, d}; int i=0; for(; i<4; i++) { printf("arr[%d]=%d\n", i, arr[i]); } return 0;}polly@nowthen:~/test$ gcc -Wall test.c -o liupolly@nowthen:~/test$ ./liuarr[0]=1arr[1]=2arr[2]=3arr[3]=4

数组中的元素本身就是变量

满意请采纳。

这句的意思是吧key1-4的值赋给a数组;以后改变key1-4的值并不会改变a数组的值;

如果我没理解错你的意思 应该不可以 你可以把数组里面的元素设置为变量 编译看下有没有报错

当然可以,但是后面一定要对变量赋值

数组里的内容还有数组长度都可以是变量

你好,VBA 怎样给长度为变量的数组赋值,你知道吗?比如下面的程序,如何用数组编写? 能帮忙就太感谢了!

数组的长度可以用变量表示,比如下面代码,就可以先定义一个动态数组,然后根据一个算式来确定数组的大小,再给它赋值
Sub abc()
Dim a() As Integer
n = 0
'写入动态数组
x = 3 * 4
ReDim a(0 To x) '根据表达式计算X的值来确定数组大小
For i = 1 To 3
For j = 2 To 5
a(n) = i + j: n = n + 1
Next
Next
'从动态数组取数
For i = 0 To n
Cells(i + 1, 1) = a(i)
Next
End Sub

阅读更多 >>>  简述游程编码的方法急

网站数据信息

"数组长度可以是变量吗,vs如何可以让变量作为数组长度"浏览人数已经达到22次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:数组长度可以是变量吗,vs如何可以让变量作为数组长度的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!