C语言定义数组但是数组长度不确定怎么办

Mair123 2012-02-09 09:18:23
手里有一小段MATLAB程序需要转化成C语言,纯C,不能用C++。

由于本人比较菜,有个问题一直困扰我不知道怎么办...

MATLAB里输入的矩阵可以是任意大小的,但是C语言里的数组一定要是固定大小,对于大小不能确定的数组我想到了用malloc动态申请内存,但是就算用malloc也必须是申请一直大小的存储空间(比如键盘输入的).....

但是我的matlab里的向量的长度是根据以前的数据算出来的,在MATLAB里非常容易得到向量长度,一句length(a)就知道向量长度了,但是C里和MALTAB里的length函数相似的怎么实现?

跪求跪求ORZ...MATLAB里不知道长度的向量怎样转化成C语言里的数组并且可以求得其元素个数???

万分感谢~!
...全文
13395 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mair123 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 czh3642210 的回复:]
引用 11 楼 mair123 的回复:
引用 6 楼 czh3642210 的回复:
如果你定义的是int型数组比如 int a[10];他的长度就更简单了,n = sizeof(a)/sizeof(int)



我懂您的意思了...可以认为是动态分配地址然后不够再追加吗?
但是...为什么只有int型可以用n = sizeof(a)/sizeof(int),如果是double型……
[/Quote]

您还在呢~向您道歉,然后大大的感谢~~~~
快去洗澡吧先,别耽误了您的生活,嘿嘿~
Mair123 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 anyidan 的回复:]
据说 matlab 不是可以自动转换成 c 吗
[/Quote]

额...用matcom吗?那个东西我就没装成功过...有自动的?不会吧...那导师为什么还让我编...
面包大师 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 mair123 的回复:]
引用 6 楼 czh3642210 的回复:
如果你定义的是int型数组比如 int a[10];他的长度就更简单了,n = sizeof(a)/sizeof(int)



我懂您的意思了...可以认为是动态分配地址然后不够再追加吗?
但是...为什么只有int型可以用n = sizeof(a)/sizeof(int),如果是double型,用 n = sizeof(a)/sizeo……
[/Quote]
行,,,,,a是什么类型的数组,就sizeof(什么类型)
Mair123 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 czh3642210 的回复:]
晕,我一直在给你写。。。而且是在顶着我老婆在我旁边唠叨的压力,好吧,我去洗澡了,悲剧
[/Quote]

谢谢谢谢,真是太感谢了~~~太感动了~~~~
Mair123 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 czh3642210 的回复:]
如果你定义的是int型数组比如 int a[10];他的长度就更简单了,n = sizeof(a)/sizeof(int)
[/Quote]


我懂您的意思了...可以认为是动态分配地址然后不够再追加吗?
但是...为什么只有int型可以用n = sizeof(a)/sizeof(int),如果是double型,用 n = sizeof(a)/sizeof(double)行不行?

非常感谢O(∩_∩)O~
面包大师 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 mair123 的回复:]
引用 2 楼 fangmingzhmg 的回复:
假设数组存的是double类型的变量
double * p = (double *)malloc(sizeof(double)*a.length)


在我觉得怎么没人回我的时候你给了我希望!!!谢谢~
你的意思是假设这个数组是a对么?
C语言里有a.length的用法吗?不好意思呀我是小鸟儿不是很懂...用加头文件神马的不?C语言里……
[/Quote]
数组根本就没这个用法a.length...也太强了
AnYidan 2012-02-09
  • 打赏
  • 举报
回复
据说 matlab 不是可以自动转换成 c 吗
面包大师 2012-02-09
  • 打赏
  • 举报
回复
晕,我一直在给你写。。。而且是在顶着我老婆在我旁边唠叨的压力,好吧,我去洗澡了,悲剧
Mair123 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fangmingzhmg 的回复:]
假设数组存的是double类型的变量
double * p = (double *)malloc(sizeof(double)*a.length)
[/Quote]

在我觉得怎么没人回我的时候你给了我希望!!!谢谢~
你的意思是假设这个数组是a对么?
C语言里有a.length的用法吗?不好意思呀我是小鸟儿不是很懂...用加头文件神马的不?C语言里有
面包大师 2012-02-09
  • 打赏
  • 举报
回复
如果你定义的是int型数组比如 int a[10];他的长度就更简单了,n = sizeof(a)/sizeof(int)
面包大师 2012-02-09
  • 打赏
  • 举报
回复
假设数组存的是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就是元素个数
ProgrammingRing 2012-02-09
  • 打赏
  • 举报
回复
malloc吧
Mair123 2012-02-09
  • 打赏
  • 举报
回复
在我觉得怎么没人回我的时候你给了我希望!!!谢谢~
你的意思是假设这个数组是a对么?
C语言里有a.length的用法吗?不好意思呀我是小鸟儿不是很懂...用加头文件神马的不?
huaweirongyaosh 2012-02-09
  • 打赏
  • 举报
回复
假设数组存的是double类型的变量
double * p = (double *)malloc(sizeof(double)*a.length)
Mair123 2012-02-09
  • 打赏
  • 举报
回复
怎么大家的帖子都有回复就我的没有,~~~~(>_<)~~~~

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧