c语言如何申请一个由外部输入长度的数组?

先由外部输入一个量,再以此作为长度定义一个数组,可以实现吗?怎样做?谢谢

可以使用malloc函数实现。
1 头文件:
stdlib.h
2 声明:
void *malloc(size_t length);
3 功能:
申请一段长度为length字节的内存空间,并将首地址返回。
4 示例:
如元素类型为type,输入的数组长度存在变量n中,那么要申请的数组所占空间为sizeof(type)*n。
数组需要定义为指针形式
type *p;
申请代码为
p = (type*) malloc(sizeof(type)*n);
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-09-21
由外部输入长度的数组,
这句话的意思就是说数组内存是活动的,因此需要用calloc或者malloc
int main(){
char *str;
int size;
scanf("%d",&size);//外部输入长度
str = (char*)calloc(size,sizeof(char));
free(str);
}
第2个回答  2005-11-25
int a[100];
main()
{int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
printf("%d",a[i]);
getch();}
先定义较大长度的数组,取其中部分来操作。
第3个回答  2005-11-24
动态分配内存

#include<stdlib.h>
int main()
{
int n,*p;
int i;
printf("Please input the num:");//输入数组的长度
scanf("%d",&n);
p=(int *)malloc(sizeof(int)*n);//定义动态数组
printf("Please input the numbers:");
for(i=0;i<n;i++)
{
scanf("%d",p+i);
}
for(i=0;i<n;i++)
{
printf("%5d\n",p[i]);
}
getchar();
}本回答被提问者采纳
第4个回答  2015-09-10

    C99支持

    使用动态内存分配

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

c语言如何输入任意长度的字符串数组
鉴于这种理解,可以定义一个输入函数,先动态申请一个较大的空间,直接向其内输入字符串;输入完毕后检测其长度,再按实际需要申请一个合适大小的空间,把刚才输入的字符串拷贝到这个合适大小的空间里,再把原先申请的大空间释放。举例代码如下:\/\/#include "stdafx.h"\/\/If the vc++6.0, with this ...

c#怎么获取一个数组的长度?
1 由malloc和realloc两个函数,分配动态空间,随时按需改变数组的最大长度。通过下面例子来理解该方法:include <stdio.h>#include <stdlib.h>int main(){ int size=100;\/\/最初为100个元素空间。 int *a = NULL; int i = 0; a = malloc(sizeof(int) * size); if(a ==...

C语言中如何定义一个二维数组,数组长度由输入值确定?
void dela(datatype **a,const int m) \/*删除用na()函数创建的并且有m行元素的二维数组a*\/{ int i; for (i = 0; i<m; i++) free(a[i]); free(a);}int main(void){ datatype **dta=na(3,2); \/*创建一个3行2列的datatype数组*\/ int i,j; if (!dta) { \/*如果创建失败,则输出...

怎样在c语言中输入一个未知长度的数列?
Dim Obj As Object Obj = New SomeClass("String required by constructor")' ...Dim MyLabel As New Label()由于数组是类,因此 New 可以创建新的数组实例:Dim MyArray As Integer()MyArray = New Integer() {0, 1, 2, 3} 如果内存不足,无法创建新的实例,公共语言运行库将引发 OutOf...

c语言中如何自定义数组长度
动态分配的数组可以自定义数组的长度,示例如下:include <stdio.h>#include <string.h>#include <stdlib.h>int main(){printf("输入要分配的内存大小:");int size;scanf("%d", &size); \/\/输入自定义的数组长度int *pstart = (int *)malloc(sizeof(int) *size);if (pstart==0) {printf...

c语言中数组长度怎么设置?
include<stdio.h>main(){ int a[5];\/\/定义一个长度为5的一维数组a int b[5][6];\/\/定义一个5行6列的二维数组b}在定义数组时可以不定义长度,可以由编译器来决定,只要在定义时赋值就可以了,这时括号内可以不写数值。例如:include<stdio.h>main(){ int a[] = {0,1,2,3,4...

用C#怎么实现从键盘输入一个数组?
1、点击“开始”—“Visual Studio 2015”,启动 Visual Studio 2015。2、点击新建项目,新建一个名为“testReadKey”的控制台应用程序项目。3、在Main()主函数中,写一段循环代码,在循环体中不断获取用户在控制台的输入,并将输入显示出来。4、点击Visual Studio 2015工具栏的“启动”,看看效果。5...

单片机C语言中如何在外RAM中定义数组
unsigned char xdata arr[];数组定义在外部 arr[0] = XBYTE [0000]; 数组的起始地址

C语言中,对于不知道长度的数组怎样输入。。。
1、一维数组程序举例:冒泡法。得到结果进行输出。二维数组常称为矩阵。把二维数组写成行列的排列形式,可以形象的理解二维数组的逻辑结构。2、C语言中不能定义未确定个数的数组,不过可以用指针来变相的完成你的要求。3、输入数组需要使用指针获取地址后,就能对得到的数组就行操作了。

相似回答