gpt4 book ai didi

c - 返回内存地址的函数

转载 作者:行者123 更新时间:2023-11-30 14:50:25 24 4
gpt4 key购买 nike

我正在尝试编写一个程序,该程序将读取数组的值的数量,调用函数来输入所述值,然后计算平均值。从那里它将调用另一个函数来打印相应的消息。问题是它似乎返回的是内存地址。

提前致谢!

这是我的代码:

#include <stdio.h>
#include <math.h>

int compute_grade_avg(int grades[], int size)
{

int i, result, average, sum=0;

//Ask the user for the specific grades
for(i=0;i<size;i++){
printf("Enter a grade:\n");
scanf("%d", &grades[i]);
}

//Calculate the sum of values in the array
for(i=0;i<size;i++){
sum += grades[i];
}

//Calculate the average based off of the sum and size of the array
average = sum/size;
result = ceil(average);

return result;
}
//Function to print the corresponding message
int write_grade_message()

{
int average;

//Messages to print depending on grade
if (average < 60){
printf("Failed semester - registration suspended");
}
else if(average < 69){
printf("On probation for next semester");
}
else if(average < 79){
printf("");
}
else if(average < 89){
printf("Dean's list for the semester");
}
else if(average < 100){
printf("Highest honors for the semester");
}
return(0);
}
//Main Function
int main()
{
int size, average;

//Enter the number of grades that will go into the array \

printf("Enter the number of grades to be entered:\n");
scanf("%d", &size);

int grades[size];


//Call compute grade average function
average = compute_grade_avg(grades, size);

//Call write grade message function
write_grade_message(average);

return(0);
}

最佳答案

问题具体在于您向 int write_grade_message() 传递了一个参数,该参数采用未指定数量的参数,这使得代码可以编译,但与现在一样未定义的行为

还有另一个原因会导致未定义行为的发生,因为您在 write_grade_message() 中重新声明了 average,并且尝试在未事先初始化的情况下读取该值 1..您需要将 write_grade_message() 更改为读取

void write_grade_message(int average) ...

并删除 average 的内部声明,您的代码可能会正常工作,另请阅读您问题的评论以获取更多有用的提示。

如果您的代码编译干净并且没有发出任何警告或消息,那么您需要启用编译器的警告和诊断,这不仅可以帮助您发现有时可能犯的一些愚蠢错误,还可以帮助您了解深入了解语言,因为您可以从警告消息中推断出一些有关该语言的有用知识。

<小时/>

1在 C 中,不显式初始化变量 - 除了全局变量或具有 static 存储类的变量 -将使变量未初始化。除了初始化它之外,任何使用它的尝试都会调用所谓的未定义行为

关于c - 返回内存地址的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48999398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com