我刚刚开始搞乱C ++,但我陷入困境。任何帮助将不胜感激。
我想通过传入另一个函数将gameState的值从EVE_START_DATE AGD_DAY AGD_START_TIME WAL_KEY
11/1/2016 1 1000 6341371019318098180
11/1/2016 1 1400 7561779448126279684
11/1/2016 8 1000 6904435321948802820
11/1/2016 8 1400 7998296559469684996
11/1/2016 15 1000 4690144247933554180
11/1/2016 15 1400 7931460546152111876
更改为true
,但是,我的思维过程似乎不正确:
false
答案 0 :(得分:2)
默认情况下,函数参数按值"传递#34;到c / c ++函数。这意味着该函数有自己的gamestate变量的本地副本,该变量初始化为调用者给出的值。
您有两种可能:更改函数以获取对变量的引用或改为使用指向变量的指针。
参考的函数看起来像这样:
void ChangeState (bool &gameState){
gameState=false;
}
使用指针看起来像这样:
void ChangeState (bool *gameState){
*gameState=false;
}
....
ChangeState (&gameState);
使用引用可以看作更方便,因为语法和局部变量的使用不会改变。另一方面,使用指针强制呼叫者使用&获取变量的地址,以便每个查看函数调用的人都知道可以在函数内部更改该值。
答案 1 :(得分:1)
在c ++中,当您将参数传递给函数时,通常会传递该值的副本,这意味着它只是该变量包含的副本,而不是该变量。为了创建输出参数,一个简单的解决方案是通过引用或指针传递。
我将展示参考版本:
void changeState(bool& gameState){
string answer;
cout << "End game? Y/N" << endl;
cin >> answer;
if(answer == "Y"){
gameState = false;
} else if (answer == "N"){
gameState = true;
}
}
代码完全相同,唯一的区别是&amp;在参数列表中的bool之后。
本教程将详细介绍: http://www.cplusplus.com/doc/tutorial/functions/
同样只是一个fyi,一个取决于操作系统的引用或指针,可能是4个字节,你的bool通常是1个字节,只返回一个bool值会占用更少的内存然后通过引用传递。
答案 2 :(得分:1)
返回通过值传递的$(document).ready(function(){
$('#statbtn').prop('disabled',true);
$('#status').keyup(function(){
$('#statbtn').prop('disabled', this.value == "" ? true : false);
})
变量,不需要在代码中通过引用或指针传递,这可能导致隐藏行为,
gameState