【发布时间】:2013-09-20 15:31:40
【问题描述】:
我需要通过引用传递我的班级。我在标题中遇到了错误,但仅限于功能 divideByTweleve 和 multiplyByEleven。这是为什么?我究竟做错了什么? 请帮我解决这个问题。
#include <stdio.h>
void displayMenu();
float addTen (float* number);
float divideByTwelve(float* number);
float subtractSixteen(float* number);
float multiplyByEleven(float* number);
int menu;
float number, finalNumber;
float* ptr_number;
int main (void)
{
float* ptr_number=NULL;
ptr_number=&number;
printf("Please enter a number : ");
scanf("%f", &number);
displayMenu();
scanf("%d", &menu);
do {
printf("\nEnter 5 to see final number\n");
scanf("%d",&menu);
switch (menu)
{
case 1: number=addTen(ptr_number);
break;
case 2: number=divideByTwelve(ptr_number);
break;
case 3: number=subtractSixteen(ptr_number);
break;
case 4: number=multiplyByEleven(ptr_number);
break;
}
printf("Your number is: %.2f \n", number);
}while(menu!=5);//close of the do-while loop
}
void displayMenu()
{
printf("How would you like to manipulate your number\n");
printf("1. Add 10\n");
printf("2. Divide by 12\n");
printf("3. Subtract 16\n");
printf("4. Multiply by 11\n");
}
float addTen (float* number)
{
ptr_number=ptr_number+10;
}
float divideByTwelve (float* number)
{
ptr_number=ptr_number/12;
}
float subtractSixteen(float* number)
{
ptr_number=ptr_number-16;
}
float multiplyByEleven(float* number)
{
ptr_number=ptr_number*11;
}
【问题讨论】:
-
如果你想让一个函数对一个数字进行操作并返回一个结果作为返回值,不要传递数字的地址,只传递数字。此外,您的函数没有返回任何内容,尽管它们被声明为返回
float。 -
在
addTen这样的函数中,为什么还要传入参数number?函数中没有用到。 -
如果你应该通过引用传递,摆脱全局变量并使用你传入的东西(提示:在你操作它之前取消引用它!)
标签: c casting type-conversion