struct ConnectFlags {
bool username;
bool password;
};
void functionB(struct ConnectFlags connect) {
connect.username = true;
connect.password = true;
}
void functionA() {
struct ConnectFlags flags;
functionB(flags);
if(flags.username && flags.password) {
printf("Both present\n");
} else {
printf("None present\n");
}
}
int main() {
functionA();
}
我有上面的代码,当我执行它时,我得到“无存在”。我在functionB中将用户名和密码的值设置为true,那么为什么我仍然将它们视为false。
任何帮助都会非常感激。
谢谢!
答案 0 :(得分:2)
在C中,参数按值传递,因此修改被调用者中的参数不会影响调用者的局部变量。
使用指针调整调用者的局部变量。
struct ConnectFlags {
bool username;
bool password;
};
void functionB(struct ConnectFlags *connect) {
connect->username = true;
connect->password = true;
}
void functionA() {
struct ConnectFlags flags;
functionB(&flags);
if(flags.username && flags.password) {
printf("Both present\n");
} else {
printf("None present\n");
}
}
int main() {
functionA();
}