目标C参数和声明

时间:2014-04-26 20:39:42

标签: objective-c

#import <Foundation/Foundation.h>

typedef struct{
    float exchangeRate;
    float theBudget;
    float euroTransaction;
}budget;
budget vacationBudget;
budget vacationBudgetEngland;

int main(int argc, const char * argv[])
{
    vacationBudget.exchangeRate=1.2500;
    vacationBudget.theBudget=1000.00;
    double numberDollars=100;
    double numberEuros=100;

第二个qs - 对于ERROR GIVEN下面的两行:隐式声明函数spendDollar和chargeEuros。在C99中无效。隐式声明是什么意思?

    spendDollar(numberDollars);
    NSLog(@"converting %.2f US dollars from a budget of 1000 into euros leaves %.2f",numberDollars,vacationBudget.theBudget);
    chargeEuros(numberEuros);
    NSLog(@"cnverting %.2f euros leaces %.2f",numberEuros,vacationBudget.theBudget);
    return 0;
}

void spendDollar (dollars){
    vacationBudget.theBudget-=dollars;
}
void chargeEuros (euros){
    vacationBudget.euroTransaction=euros*vacationBudget.exchangeRate;
    vacationBudget.theBudget-=vacationBudget.euroTransaction;

}

HI GUYS!我试图从“客观C傻瓜”中学习目标C,所以我有几个问题。我对2-3件事感到困惑 - 希望你能提供帮助:D提前致谢

如果你们能用“NOOB”语言解释那将会很棒。

  1. 为什么我需要函数原型用于底部写的函数?如果在main中执行的执行不会将值转移到没有原型的函数? ERROR GIVEN-收取欧元和花费美元的冲突类型

  2. 上面的代码!

  3. 还在书中印刷的代码中!对于下面的2功能,它说它应该是双倍的美元和双欧元的参数。我想知道为什么我必须再次宣布加倍。没有在python中这样做。(我知道一点python)

1 个答案:

答案 0 :(得分:1)

  1. 因为否则,在调用时,编译器不知道函数返回什么类型,或者它接受什么类型的参数,并且它需要。

  2. 假设你指的是“隐式声明”错误,这只是从(1)开始,你得到它是因为你试图在用原型声明它之前调用一个函数,或者首先定义函数

  3. C不是Python。编译器需要知道每个参数的类型,因为不同的类型表示不同。例如,int可能需要4个字节,而double可能需要8个字节。在确定您需要传递给函数的确切内容时,这是非常重要的信息。