我在使用带有def结构变量类型的决策语句时遇到了麻烦, 我也不能在任何地方声明变量等于零。
这是结构
typedef struct{
int wallet;
int account;
}MONEY;
它在main中声明为MONEY money;
(但是对于函数我有
麻烦* m)
当我尝试做这样的事情时
*m.wallet = *m.wallet - depositAmmount;
或者
*m.wallet = 0;
它给出了一个语法错误,表达式必须具有类类型。
我该怎么办?在函数内部,我尝试声明int *m.wallet = 0;
甚至DATE *m.wallet;
无效
以下是整个功能
#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
答案 0 :(得分:3)
要访问指向结构的指针的成员,请使用->
运算符。
m->wallet = m->wallet - depositAmmount;
m->wallet = 0;
.
运算符的优先级高于*
解除引用的优先级,因此您需要对该表达式使用括号来获取结构成员。
(*m).wallet = (*m).wallet - depositAmmount;
(*m).wallet = 0;
答案 1 :(得分:2)
结构成员运算符.
的优先级高于解除引用运算符*
。所以下面的陈述
*m.wallet = 0;
与
相同*(m.wallet) = 0;
这意味着获取结构wallet
的成员m
,然后取消引用它,假设它是一个指针。但m
是指向结构的指针,而不是结构本身。因此,您应首先取消引用指针以获取结构,然后使用.
运算符来获取wallet
成员。
(*m).wallet = 0;
您还可以使用更方便的箭头操作符->
作为
m->wallet = 0;
他们是一样的。