读取浮动到数组中
我怎么能读取让我们说10个浮点数并将它们存储在一个数组而不浪费任何内存?
int size = 10; float vet[size]; for(i = 0; i < size; i++){ scanf("%f", &vet[i]); }
尽可能简单:)
啊哈。 这不是读浮标的问题,而是记忆。 你在i中读到,你需要一个完全包含i浮点数的数组。
这确实闻起来像家庭作业,这很好,但我太老师给你完整的答案。 所以我告诉你,你需要的是一个名为mallof()的C函数和一个名为sizeof的C运算符(它看起来像一个函数,但它实际上是构建在语言中)。
看看这个教程 。
是的,你明白了。 这是您评论中的代码,格式化。
int n,index; float temp; scanf("%d",&n); float *pValues=(float *)calloc(n,sizeof(float)); for(index=0;index
我会做两个改变:
- 除了角色之外,使用
malloc
更加惯用 - 在C中,数组和指针的关系非常密切; 实际上
*(pValues+index)
与pValues[index]
完全相同。
所以我把它重写为:
int n,index; float temp; scanf("%d",&n); float *pValues=(float *)malloc(n*sizeof(float)); for(index=0;index
让我们看一下代码的另一个转换。 你有pValues
,它是float
的指针。 你有&temp
,它也是float
的指针,因为&
是运算符的地址,而temp
是float
。 AND,你只是用索引做指针算术。 所以,我们可以再重写一次:
int n,index; // Don't need temp scanf("%d",&n); float *pValues=(float *)malloc(n*sizeof(float)); for(index=0;index
现在,测验问题:如果你做了循环会发生什么
for(index=0;index
你必须更具体地解决这个问题。
除非你还有其他需要处理这些数字的东西,否则最简单的节省内存的方法就是不要将它们存储在一个数组中。
这听起来像你想要的东西。
sum = 0;
做
读电流
总和+ =当前
虽然(你还没读过10个数字);
您的问题的答案是您无法向数组添加内容并期望数组使用任何内存。
float arr[10]; for(i = 0; i < 10; i++){ scanf("%f", &arr[i]); }
我知道,它就像上面那样,但是如果它没有被优化的话,不会使用额外的int。 呵呵
使用更少的内存我们使用下面的代码。 它们都被读入一个数组,但只有最后一个要读入的数组是在数组中:
float arr[1]; for(i = 0; i < 10; i++){ scanf("%f", &arr[0]); }
听起来像家庭作业。
从输入中读取浮点数。 乘以单个浮点数的大小分配在浮点数指针中存储地址的确切字节数有一个循环读取来自输入的浮点数有一个循环,它将数组中的所有浮点数相加
我在这里的猜测是功课是实现术语指针和数组之间的连接,虽然你可以在没有任何数组索引的情况下做到这一点,但你的问题暗示你必须使用数组。