C 使用def结构变量类型的条件语句时出现问题

C 使用def结构变量类型的条件语句时出现问题,c,struct,typedef,conditional-statements,conditional-operator,C,Struct,Typedef,Conditional Statements,Conditional Operator,我在使用def结构变量类型的决策语句时遇到问题, 而且我不能在任何地方声明变量等于零 这是结构图 typedef struct{ int wallet; int account; }MONEY; 它主要被宣布为货币(但对于im具有的功能 它的问题(m) 当我尝试做这样的事情时 *m.wallet = *m.wallet - depositAmmount; 还是这个 *m.wallet = 0; 它给了我一个语法错误,说表达式必须有类类型。 我该怎么办?在函数中,我尝试声明i

我在使用def结构变量类型的决策语句时遇到问题, 而且我不能在任何地方声明变量等于零

这是结构图

typedef struct{
    int wallet;
    int account;
}MONEY;
它主要被宣布为
货币(但对于im具有的功能
它的问题(m)

当我尝试做这样的事情时

*m.wallet = *m.wallet - depositAmmount;
还是这个

*m.wallet = 0;
它给了我一个语法错误,说表达式必须有类类型。 我该怎么办?在函数中,我尝试声明int
*m.wallet=0甚至<代码>日期*m钱包无效

下面是整个函数

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h>
#include <math.h>
#define clear system("clear") 
#define pause system("pause") 
void banking(MONEY *m){
    int userChoice = 0;
    int withdrawAmmount = 0;
    int depositAmmount = 0;
    do{
        userChoice = 0;
        withdrawAmmount = 0;
        depositAmmount = 0;
        displayBankMenu(*m);
        scanf("%i", &userChoice);
        clear;

        switch (userChoice) {
            case 1:
                    printf("How much would you like to Deposit?: $");
                    scanf("%i", &depositAmmount);
                    if(depositAmmount <= *m.wallet){
                        *m.wallet = *m.wallet - depositAmmount;
                        *m.account = *m.account + depositAmmount;
                    }else{
                        printf("You do not have sufficient funds for this transaction.");
                        pause;
                    }

                    break;
            case 2:                 
                    printf("How much would you like to withdraw?: $");
                    scanf("%i", &withdrawAmmount);
                    if(withdrawAmmount <= *m.account){
                        *m.account = *m.account - withdrawAmmount;
                        *m.wallet = *m.wallet + withdrawAmmount;
                    } else{
                        printf("You do not have sufficient funds for this transaction.");
                        pause;
                    }

                    userChoice = 0;

                    break;
        }
    }while(userChoice != 3);
} //end banking
#包括
#包括
#包括
#包括
#定义清除系统(“清除”)
#定义暂停系统(“暂停”)
无效银行业务(货币*m){
int userChoice=0;
int-numount=0;
int DepositAmount=0;
做{
userChoice=0;
取款数量=0;
存款金额=0;
显示菜单(*m);
scanf(“%i”、&userChoice);
清楚的
开关(用户选择){
案例1:
printf(“您想存多少?:$”;
scanf(“%i”和“存款金额”);

如果要访问指向结构的指针的成员,请使用
->
运算符

m->wallet = m->wallet - depositAmmount;
m->wallet = 0;
运算符的优先级高于
*
取消引用,因此需要对该表达式使用括号来获取结构成员

(*m).wallet = (*m).wallet - depositAmmount;
(*m).wallet = 0;

要访问指向结构的指针的成员,请使用
->
运算符

m->wallet = m->wallet - depositAmmount;
m->wallet = 0;
运算符的优先级高于
*
取消引用,因此需要对该表达式使用括号来获取结构成员

(*m).wallet = (*m).wallet - depositAmmount;
(*m).wallet = 0;

结构成员运算符
的优先级高于取消引用运算符
*

*m.wallet = 0;

*(m.wallet) = 0;
这意味着获取结构
m
的成员
wallet
,然后将其解引用,假设它是指针。但是
m
是指向结构的指针,而不是结构本身。因此,您应该首先解引用指针以获取结构,然后使用
运算符获取
wallet
成员

(*m).wallet = 0;
您还可以使用更方便的箭头运算符
->
作为

m->wallet = 0;

它们是相同的。

结构成员运算符
的优先级高于取消引用运算符
*

*m.wallet = 0;

*(m.wallet) = 0;
这意味着获取结构
m
的成员
wallet
,然后将其解引用,假设它是指针。但是
m
是指向结构的指针,而不是结构本身。因此,您应该首先解引用指针以获取结构,然后使用
运算符获取
wallet
成员

(*m).wallet = 0;
您还可以使用更方便的箭头运算符
->
作为

m->wallet = 0;

它们是一样的。

非常感谢!我现在明白了,我会记住第二部分以备将来参考!:)非常感谢!我现在明白了,我会记住第二部分以备将来参考!:)