当前位置:首页 » 编程语言 » c语言改变数组长度
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言改变数组长度

发布时间: 2022-02-04 21:24:46

c语言中如何自定义数组长度

C99标准支持不定长数组(代价是不能用goto语句)。在输入语句后声明就可以了。
不过现在的编译器对C99的支持都不好```
对于ANSI C(C89)一般的编译器都支持。不过数组长度必须是编译期确定的常量,运行时不能改变。所以采用动态分配实现。
例如
#include<stdio.h>
#include<stdlib.h>/*这个头文件在用malloc和free等分配内存函数时必须被包含*/
int main()
{
int n,*a=NULL;
printf("Please input the num of elements:\n");
scanf("%d",&n);
if(!(a=(int *)malloc(n*sizeof(int)))
{
printf("Memory is not accessed!\n");
exit(1);/*内存分配失败时异常退出。也需要stdlib.h*/
}
/*如下使用方法实质是相同的*/
scanf("%d",a[0]);
scanf("%d",a+0);
/*这里写代码*/
free(a);
/*用完之后需要释放,否则会造成内存泄漏*/
}
return 0;
}
其它还有calloc、realloc等,C++里也可以用new、delete等运算符(如 confuciuskg 所述),具体用法可以直接网络。

Ⅱ C语言中怎么定义动态的数组长度

动态数组长度,对于部分新的编译器,支持C99的,可以直接用变量定义数组

比如

func(intn)
{
inta[n];
....
}

不过 有些编译器不支持 会报错

就只能使用动态数组,也就是malloc

func(intn)
{
int*a;
a=(int*)malloc(sizeof(int)*n);
....
free(a);
}

Ⅲ 怎么在C语言中重新定义数组的长度

C语言一维数组分静态一维数组和动态一维数组两种。 一、静态一维数组,在定义的时候就已经确定其长度。如 int a[10];就是定义了一个长度为10个元素的整型数组。 静态数组不支持长度的增加。如果要增加长度,只能新定义一个更长的数组,

Ⅳ c语言 自定义数组长度

说明数组之前先说明变量。
所有的变量在使用之前都必须先定义。为什么呢?因为变量都是存放内存当中(当然一些存放在代码段如单片机使用关键字code的变量另算),一般每个内存单元的大小是一个字节,如果你在使用一个变量时没有事先定义它的类型,也就是说,编译器根本不知道该变量所占的内存空间的大小,变量能存放的数据范围也未知,这势必会造成紊乱,两个变量所规划的内存地盘不明确,CPU在访问时有没有越界都不知道,这样编译器当然不会帮你干这种坏事啦。所以,一个变量在使用之前必须先定义(存储方式、数据类型)。
好,再来说说数组。
数组是什么概念,有木有深刻的理解过?好,我现在说说一维数组(其实多维数组也是一样的)。
数组是一组具有相同类型并且有一定的相互关系的变量的集合。注意,每个数组元素都是一个变量。那这些有相互关系而且数据类型一样的变量是怎么存放在内存当中的呢?其实,他们是连续存放的,也就是说他们中间没有间隔不相关的内存单元。而且编译器也要事先知道你这个数组的长度是多少,才能分给你家多少内存。(就好像某某政府要分田地给老百姓,先数一下确定你家到底多少人口,才能分多少地给你家,不然不是浪费就是种田的时候种到别人家的田地去了,呵呵,是吧?这个编译器是绝对不允许的)。
所以说,一个数组在定义时必须要事先规定好这个数组的长度,这样编译器才知道怎么样分配内存空间给这个数组。这里注意一点,数组的长度必须是一个常量,变量是不行的,变量的值可以改变,编译器已经分配了多少空间给这个数组,怎么能说变就变呢?因为编译器是编译器,程序是程序,这个跟定义一个变量是一样的。
使用malloc函数,一般结合链表来用,链表存放的数据就不一定是连续的了。
等某一天你变成中国的计算机牛B人物了,可以想个办法做个超吊的编译器实现数组长度想怎么变就怎么变,哥也期待那一天,弟,你行的。
所以说,你想的太天真啦。哈哈。

Ⅳ C语言中如何把一个数组长度变短

很想知道你这样做的场景是什么?如果是只想取前数组的前4个数,直接根据a[i](i=0,1,2,3)取就可以了,如果你是非要变成4个数字的数组,那就重新定义一个数组,把之前的数据前4个数Copy过去。