请教动态一维数组的问题
程序代码:
#include <stdafx.h> #include <stdio.h> # include <stdlib.h> void main() { int a[]={0, 1,2,3,5, 0, 5, 0, 3,2,1, 0,0,1,2,0, 4}; int i=0, n=0, m; int *b; b=(int*) malloc( sizeof(int) * m); if (b == NULL) { printf ("fail\n"); exit(1); } while(i<18) { if(a[i]!=0) { b[n]=a[i]; n++; } i++; }; for(i=0;i<n-1;i++) printf("b[%d] %d\n", i, b[i]); printf("%d\n", m); free(b); }
程序目的:统计一个数组中非0元素
问题:因为不知道非0元素的个数,所以想用动态一维数组储存。
说明:实际处理问题的比较复杂,是个大型程序。因此,虽然此处程序运行结果正确,但不知 随着程序的复杂和数组中元素的增多,m是否能开辟出相应的内存 ?
补充:事先定义一个超大数组的做法不太赞成,因为b数组中的元素将来还要做其它运算。