gpt4 book ai didi

C 编程函数

转载 作者:行者123 更新时间:2023-11-30 16:38:24 26 4
gpt4 key购买 nike

我对编程非常陌生,最近我遇到了函数主题。当我想试验我的知识时,我编写了这个非常基本的代码

我的目标是制作单独的读取函数、计算函数和打印函数,并在主函数中调用这三个函数...但是,这段代码没有显示任何错误,但它给出的输出只是垃圾值(value),我怎样才能让它真正发挥作用?

#include <stdio.h>
#include <stdlib.h>
void read(int hrs,int pR);
int calc(int hrs, int pR);
void print(int res);

int main()
{
int hours, payRate;
read(hours,payRate);
calc(hours, payRate);
int c = calc;
print(c);
}

void read(int hrs,int pR)
{
printf("enter hours and pay rate");
scanf("%d%d", &hrs, &pR);
}

int calc(int hrs, int pR)
{
int grossPay = hrs * pR;

return grossPay;
}

void print(int res)
{
printf("The grossPay is %d", res );
}

最佳答案

calc(hours, payRate); 此处调用该函数,但丢弃返回值。好的编译器会对此发出警告。应该是

int c = calc(hours, payRate);

此外,函数read仅修改变量的本地副本。存储的值不会返回给调用者。您必须更改该函数,以便它获取调用者分配的变量的地址:

void read(int* hrs, int* pR)
{
printf("enter hours and pay rate");
scanf("%d%d", hrs, pR);
}
<小时/>

现在,真正令人麻烦的部分是,int c = calc; 行编译时没有给您来自编译器的消息。这意味着你的编译器无法正常工作,因为这一行不是有效的 C。 calc 是一个函数(衰减为函数指针),不能分配给整数 - 这不是语言允许。

一些非标准编译器会将该行视为 calc 衰减为函数指针,然后将其分配给一个整数。为了防止这种危险行为,请确保使用 C 兼容的编译器。

我推荐使用gcc,它可以用来编译标准C代码,如果你这样调用它:

gcc -std=c11 -pedantic-errors

关于C 编程函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47509965/

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