gpt4 book ai didi

关于函数内外的结构值赋值的混淆

转载 作者:太空宇宙 更新时间:2023-11-04 08:15:55 25 4
gpt4 key购买 nike

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();
}

关于关于函数内外的结构值赋值的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35822175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com