c语言 不定长数组

Python014

c语言 不定长数组,第1张

数组本身就是静态连续分配的,其有数据类型,也就是说是固定长度的,不定义就默认,你写的就是char 型的,长度为256;

动态数组就借助于指针了,char *c = (char*)malloc(sizeof(char) * strlen)strlen是所定义的数组的维数,这样在定义后,在栈内分配,不用了一定要free(c),不然,系统一直占用!

希望可以帮到你,如果满意请采纳!

不可以,数组在创建时长度已经确定了,而且创建后也无法更改数组的长度,楼上说的malloc动态申请的内存也是已确定的,你都不能在 不破坏原有数据的情况下改变其大小。

那怎么储存未知大小的数据呢,在储存后怎样能随意的对其添加、更改、删除、查找等一系列操作呢?只用简单的数组肯定不行,需要用到别的数据结构,如链表、二叉树等等,总有一款适合你。在大家学到数据结构与算法的时候 ,一切难题都将迎刃而解。

最后补充一点,楼上有人说数组的长度不能用变量来确定,这是错误的。 C中有 变长数组 的概念呀(c99标准),“变长”的意思就是 可以用变量来指定数组的长度,而数组一旦创建 长度就无法变化了,而且变量必须赋值在先,变长数组才能创建。某些人不能因为无法正确的设置编译器支持c99标准,而否定了 变长数组 这个用法。

可以用new分配内存。(对于c语言没有string可以使用malloc分配内存)

不用的时候delete掉(用malloc的用free)

比如说输入的时候在循环外定义一个char指针分配1内存;

在循环内先分配内存(长度为原先长度*2),再输入,循环判断的条件为后面还有没有输入。

建议使用getline函数设定最多读取长度,相当于分批读取,算是手动实现了string的输入吧