C语言定义数组但是数组长度不确定怎么办
手里有一小段MATLAB程序需要转化成C语言,纯C,不能用C++。
由于本人比较菜,有个问题一直困扰我不知道怎么办...
MATLAB里输入的矩阵可以是任意大小的,但是C语言里的数组一定要是固定大小,对于大小不能确定的数组我想到了用malloc动态申请内存,但是就算用malloc也必须是申请一直大小的存储空间(比如键盘输入的).....
但是我的matlab里的向量的长度是根据以前的数据算出来的,在MATLAB里非常容易得到向量长度,一句length(a)就知道向量长度了,但是C里和MALTAB里的length函数相似的怎么实现?
跪求跪求ORZ...MATLAB里不知道长度的向量怎样转化成C语言里的数组并且可以求得其元素个数???
万分感谢~!
[解决办法]
假设数组存的是double类型的变量
double * p = (double *)malloc(sizeof(double)*a.length)
[解决办法]
malloc吧
[解决办法]
假设数组存的是int型
那么 你先申请10个元素
int* a = (int*)malloc(sizeof(int)*10);
如果又来了个元素,那么你就可以
a=(int *)realloc(a,11*sizeof(int));
求元素个数int i,n=1;
for(i = 0;(a+i)!=NULL;i++)
{
;
}
n=i+1;//n就是元素个数
[解决办法]
如果你定义的是int型数组比如 int a[10];他的长度就更简单了,n = sizeof(a)/sizeof(int)
[解决办法]
据说 matlab 不是可以自动转换成 c 吗