当前位置:首页 » 编程语言 » c语言不定长数组

c语言不定长数组

发布时间: 2022-04-04 21:44:29

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

不可以,数组在创建时长度已经确定了,而且创建后也无法更改数组的长度,楼上说的malloc动态申请的内存也是已确定的,你都不能在 不破坏原有数据的情况下改变其大小。
那怎么储存未知大小的数据呢,在储存后怎样能随意的对其添加、更改、删除、查找等一系列操作呢?只用简单的数组肯定不行,需要用到别的数据结构,如链表、二叉树等等,总有一款适合你。在大家学到数据结构与算法的时候 ,一切难题都将迎刃而解。
最后补充一点,楼上有人说数组的长度不能用变量来确定,这是错误的。 C中有 变长数组 的概念呀(c99标准),“变长”的意思就是 可以用变量来指定数组的长度,而数组一旦创建 长度就无法变化了,而且变量必须赋值在先,变长数组才能创建。某些人不能因为无法正确的设置编译器支持c99标准,而否定了 变长数组 这个用法。

2. c语言中不定长数组是指的变长数组吗

变长数组在C++中指的是集合(也叫容器)
如vector就是

C语言中,所有的数组都不定长,没有下标越界的概念,数组实质就是一个指针(由数组名充当),因此C语言中数组的长度没有任何意义
平常在C语言中讲的不定长数组,其实就是指针。比如char *p;这句就定义了一个不定长的字符数组p(长度任意)

3. c语言 怎么声明一个不确定大小的数组

C没有提供现成的办法。不过我在实际工作中做过,用起来挺爽的。声明一个所需类型的指针p,用malloc函数申请一个较小的空间(例如10个元素)并将首地址赋给p就构成了以p为首地址的一维数组;然后向数组输入数据;输入满后还需输入时,用上述同样办法另申请一个以指针q为首地址的较大的数组(例如20个元素)。把p的数据全拷贝到q数组,把p指向的空间释放并让p指向q,继续输入……如此反复。

4. 在c语言中如何将一组不定长度的数存入数组

C语言中不能定义未确定个数的数组,不过可以用指针来变相的完成你的要求。
示例程序如下:
#include<stdio.h>
#include<stdlib.h>
void main()
{
int* p;
int n,i=0;
scanf("%d",&n);
printf("请输入%d个数字:\n",n);
p=(int*)malloc(n*sizeof(int));
for(;i<n;i++)
{
scanf("%d",p+i);
}
printf("输入的数字有:");
for(i=0;i<n;i++)
printf("%d ",*(p+i));
puts("");
}
该程序完成了用指针定义N个整数数组的功能,如果有其它的类型只需要改变指针和malloc中的类型即可,有问题hi我

5. C语言定义数组但是数组长度不确定怎么办

假设数组存的是int型
那么 你先申请10个元素
int* a = (int*)malloc(sizeof(int)*10);
如果又来了个元素,那么你就可以
a=(int *)realloc(a,11*sizeof(int));
求元素个数int i,n=1;
for(i = 0;(a+i)!=NULL;i++)
{
;
}
n=i+1;//n就是元素个数

6. c语言输入不定长数组,第一个数总是消失,程序如下,请大牛回答,怎么改

输入的时候 在前面加一个空格 因为被你的getchar()把1拿走了
或者代码改为
do
{
scanf("%d",&a[i]);
i++;
}while((getchar())!='\n');

7. c语言,输入一个长度不定的整型数组(1000位以内),我要怎么知道该数组的长度。

一般有两种方式。
1 第一个输入为数组长度。 比如输入 3 12 45 87
2 以特定输入为结束标记, 比如 以0,-1或者EOF作为结束标记。或者整行输入,以换行符为结束标记。
一般来说,在自动判题系统中,以EOF为结束, 或先输入长度, 是最为常见的两种方式。

8. c语言不确定长度二维数组申明与初始化

那不是rnum和cnum的问题,而是三级指针dataarray的类型与float[rum][cnum]不匹配。二级指针dataarray只与float[rum]的类型匹配,*dataarray才与float[rum][cnum]匹配。

9. 请问C语言中,如何在结构体内定义长度不确定的数组呢

两种方法:
一种是采用指针, 动态分配内存
另一种请搜索"柔性数组", 这种方式同样需要在堆中动态分配内存.

10. C语言不定大小二维数组

把你的所有len[]改成len就行了。len就1个元素,那实质就是一个变量,干嘛要声明成1个元素的数组呢?不是自找麻烦吗?原来只有len[0]有效,可代码中几处用了len[1],因为没有为其赋值,一般情况下其中的值很大或是负数(随机的),代码啥时才能做完啊……
另:你没有释放内存!大忌!

热点内容
androidurl判断 发布:2025-05-20 13:50:11 浏览:257
共享文件夹没有启动服务器服务 发布:2025-05-20 13:43:38 浏览:803
天龙八部游戏怎么切换服务器 发布:2025-05-20 13:42:36 浏览:630
亚马逊免费主机是什么配置 发布:2025-05-20 13:40:10 浏览:695
存储类型默认分配 发布:2025-05-20 13:32:26 浏览:662
qq信息加密 发布:2025-05-20 13:31:32 浏览:341
文件夹嗅探器foldersniffer 发布:2025-05-20 12:33:36 浏览:912
编译装入 发布:2025-05-20 12:32:48 浏览:562
万胜压缩机价格 发布:2025-05-20 12:20:00 浏览:987
判断云服务器是否诚实的存放数据 发布:2025-05-20 12:11:07 浏览:377