C语言中可以定义不定长度的数组(即数组长度由变量确定)吗
发布时间:2025-05-14 10:41:01 发布人:远客网络
一、C语言中可以定义不定长度的数组(即数组长度由变量确定)吗
1、不可以,数组在创建时长度已经确定了,而且创建后也无法更改数组的长度,楼上说的malloc动态申请的内存也是已确定的,你都不能在不破坏原有数据的情况下改变其大小。
2、那怎么储存未知大小的数据呢,在储存后怎样能随意的对其添加、更改、删除、查找等一系列操作呢?只用简单的数组肯定不行,需要用到别的数据结构,如链表、二叉树等等,总有一款适合你。在大家学到数据结构与算法的时候,一切难题都将迎刃而解。
3、最后补充一点,楼上有人说数组的长度不能用变量来确定,这是错误的。 C中有变长数组的概念呀(c99标准),“变长”的意思就是可以用变量来指定数组的长度,而数组一旦创建长度就无法变化了,而且变量必须赋值在先,变长数组才能创建。某些人不能因为无法正确的设置编译器支持c99标准,而否定了变长数组这个用法。
二、c语言中怎样定义一个未知长度的数组
设置值等于null就行了追问:给个例子白??小弟是自学的!悟性低啦??谢谢!!回答: int[] a=null;就是把数组 a的值设置为空。所以系统没有为他分配内存,等你给数组a赋值的时候系统会自动给他分配相应的内存追问:我在手机上的搜索貌似说的是用到链表和指针神魔的??但是找不到啦!!麻烦您能帮忙给个例子不??谢谢!!回答:链表指针需要用这么麻烦吗。我从没这样弄过。你需要的是一个未知长度的数组,所以不给这个数组赋值就是最好的。比如int[] a;这就是申明一个数组变量 a,但没给他赋值所以他就没有长度追问:哦好吧!!嘿嘿!!谢谢啦!!知道啦!!回答:速度选个满意呗
三、c语言中可不可以用变量定义数组的个数;
1、c语言中不可以用变量定义数组的个数。
2、mallo函数返回的实际是一个无类型指针,必须在其前面加上指针类型强制转换才可以使用;
3、指针自身=(指针类型*)malloc(sizeof(指针类型)*数据数量);
4、p=(int*)malloc(sizeof(int)*n);
5、调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。接下来,将分配给用户的那块内存传给用户,并将剩下的那块(如果有的话)返回到连接表上。
6、调用free函数时,它将用户释放的内存块连接到空闲链上。到最后,空闲链会被切成很多的小内存片段,如果这时用户申请一个大的内存片段,那么空闲链上可能没有可以满足用户要求的片段了。