C语言中怎样定义一个可变大小的数组呢?我想根据自己的需要输入数组的大小,谢谢啦

如题所述

定义动态数组,例如:
#include <stdio.h>
#include <stdlib.h>
int len;
char *str;
printf("输入数组的长度:");
scanf("%d",&len);
str=(char*)malloc(len*sizeof(char));
为str分配分配len个字符大小的空间。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-02-17
通过指针和动态分配函数完成。
如: int *p;
p=(int *)malloc(sizeof(int)*10);
上述可申请大小为10的整型数组。
当然也可以用链表实现。
第2个回答  2011-02-17
C99标准定义了可变长数组,不过也是有限的。VC并不支持,TC远老于C99就更不可能支持了,gcc支持。
要真正的动态数组还是只能用指针,用malloc分配内存。
关于可变长数组的描述见:http://blog.csdn.net/supermegaboy/archive/2009/11/23/4854921.aspx
第3个回答  2011-02-21
这个很简单,你不要给数组规定大小就可以了,比如 a[] 这个数组的大小就是你输入的多少来决定的
第4个回答  2011-02-17
常规定义是不可能的 呵呵
不过可以动态内存分配用calloc函数建立连续空间段,相当于数组了

C语言中怎样定义一个可变大小的数组呢?我想根据自己的需要输入数组的大...
定义动态数组,例如:include <stdio.h> include <stdlib.h> int len;char *str;printf("输入数组的长度:");scanf("%d",&len);str=(char*)malloc(len*sizeof(char));为str分配分配len个字符大小的空间。

在C#中怎么使数组是个可变的,数组大小由用户自己输入
CreateArray();OutArray();}

可变长数组在c里面怎样定义
在C语言中,数组的大小是在定义的时候就需要确定的,不然编译的时候进行分配内存时,会使计算机不知道该分配多少内存单元而报错。然而,可以根据定义一个链表来达到可变的效果。链表节点定义如下:struct { int data; \/\/ 数据域 struct node *next; \/\/ 指针域 } *node;struct node head, p;h...

C语言 可变长数组
也就是说你a这个数组大小就确定了,即为1。我不知道你学了内存分配没有,简单给你讲解一下,具体你可以在网上搜。比如一个含有5个整数类型的数组可以这样定义a[5],但是也可以这样获得:int *a = (int *) malloc ( sizeof( int ) * 5 );也就是说我们给一个指针分配了内存,从而得到一个...

C语言可变长数组在GCC编译器中的实现
在C99中新加入了对变长数组的支持,即数组的长度可以由某个非const变量来定义。可变数组的空间大小直到程序运行时才能确定,因此只有程序在运行时才能为程序分配空间。在gcc编译器程序会在运行时根据实际指定的大小(变量当前的值)调节esp的值,为数组在栈上分配适当大小的空间。由于要在运行时才能为数组...

C语言支持可变长数组吗,如果可以请举例书名。谢谢
c99以前的版本是没有的,数组大小必须是常量或者是常量表达式,c99版本才加入变长数组,如:int add(int n){ int a[n];...} 即使它叫做变长数组,但是数组大小一旦确定就不能改变了。很多书里面都有介绍,如《深入理解计算机系统》

如何做出一个C++可变长数组,请各位帮忙
1)需要一个T类型的指针,动态分配内存,需要一个整数记录数组大小 2)一个缺省构造函数 vector();\/\/ 无成员,或者任意常量个成员 和一个单参构造函数 vector(int n); \/\/n 个成员 3)添加成员,需要动态改变分配的内存大小。改变成员数量的函数:void resize( int n);添加成员的函数:void push_...

C\\C++语言如何定义数组数组长度由键盘输入
C\\C++本身不支持动态数组,但是可以通过动态申请内存实现由键盘输入长度的方式确定数组长度。实现代码如下:int num;cout<<“请输入数组大小”;cin>>num;int *p=new int[num];\/\/这里就可以使用这个动态数组了。delete []p; \/\/不用的时候务必自己删除内存 ...

C语言怎么实现可变长度字符串
char * p = (char*)malloc(sizeof(char)*n)别忘了free C++和C#的string类型在最低层实际也是利用类似方法去做的 另外有一种 char str[SIZE_MAX]也有人喜欢用 realloc函数 只是不太推荐,主要原因是以前系统上这个函数操作会出问题,因为内存的原因 ...

c语言怎么输入任意长度的一个数组
就要靠输入,来确定数组大小了。重点在于,要开辟多大的数组来存 一般有这么几种情况 1 直接开一个足够大的。 比如 虽然不知道有多大,但最大不超过1000个,那就可以直接开个1000元素的数组。2 动态分配, 使用malloc动态分配内存。当出现可能的不够情况,用realloc重新分配。

相似回答