c语言中不知道数组长度的情况下,怎么申请空间?
那个这是个好问题。目前我能想到的就是用链表结构代替数组,或者更确切的说,用alloc函数来构建一个链表。
与数组不同的是,数组的元素在内存中是一个连续的区域,而链表的节点在内存中是一个离散的区域,所以链表的运行效率比数组差一点。
如果有朋友的其他,可以留言,一起讨论!
动态内存扩展。例如,将一个文件装入内存,写入长度和数据类型(字符、结构、二进制数等。)转换成alloc函数,并将第一个地址指针返回给*ptr,就可以使用了。对了,vcten是用new扩展的,方法同上。
浪费不可避免。但是你可以封装一个间接调用malloc的函数,在里面判断,超过了再申请,没有的话从里面申请。实际上,这类似于操作系统的堆内存管理器。
在这种情况下,有两种解决方案。
1.如果你只是不我不知道大小,但你知道上限。然后可以声明有上限的数组变量。优点是程序大小在编译时就确定了;运行时数组的内存空间是从堆栈中分配的;不需要手动释放内存;很快。缺点是会浪费空间。
2.否则只能通过动态申请内存空间(malloc)来解决问题。可以设计一个两倍于满的数组,然后复制原数组,将指针指向新数组,最后释放旧内存空间。好处是你不不必担心阵列容量(主题提出的主要问题);唐不要浪费空间。但缺点也很明显:操作复杂;内存从堆中分配,可能不够用;必须手动分配和释放内存;速度慢。
因为我只回答数组。所以解决方法还是比较多的:可以参考其他大神的方法,使用其他数据结构。我赢了。;这里就不重复了。
怎样将字符数组转换为整形数组?
//#includestdafx.h//vc6.0加这行。#includesdio.hvoidmain(void){charstr[]{11,12,13,14,15,16,17,18,19,20};intdstr[10],I;for(i0;i10dstr[I]str[I]);printf(
);}其实不需要转换。char数组是一个单字节的整数数组,直接用就行了...