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。
非常感谢任何帮助。
谢谢!
在 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();
}
我是一名优秀的程序员,十分优秀!