【发布时间】:2017-10-25 10:11:05
【问题描述】:
我编写了一些代码来比较一周的温度。
我做了两个函数,一个是写入数组,另一个是计算平均温度。它编译没有错误。一旦我输入我的第一个数字,应用程序就会崩溃,并且我在 stdio.h 库中收到此错误:
在 7.3.exe 中的 0x533C742E (ucrtbased.dll) 处引发异常:0xC0000005:访问冲突写入位置 0xCCCCCCCC。
我做了一个类似的没有功能的练习,效果很好。 希望你们能帮帮我。这是我的代码
#include <stdio.h>
#define MAX 7
#define _NO_CRT_STDIO_INLINE
void read(int);
float gem(int);
int main(void)
{
float x = 0;
int temp[MAX];
read(temp[MAX]);
x = gem(temp[MAX]);
printf("%f", x);
}
void read(int k[MAX])
{
for (int i = 1; i < 8; i++)
{
printf("geef de temp voor dag %d ", i);
scanf_s("%d%*c", &k[i-1]);
}
}
float gem(int y[MAX])
{
int som = 0;
float gem = 0;
for (int i = 0; i < 8; i++)
{
som += y[i - 1];
gem = som / 7;
return gem;
}
}
【问题讨论】:
-
y[i - 1];访问y[-1]ifi == 0 -
您如何以及为什么认为
void read(int)会等于void read(int k[MAX])?也许你应该退后几步,read a couple of good beginners books。 -
不相关:
gem = som / 7; return gem;-->gem = som / 7.; return gem;(或gem = (double)som / MAX; return gem;)并在for循环之后移动。
标签: c arrays function-calls