C++ 在函数中使用参数和声明有什么区别
我遇到了一个对我来说毫无意义的问题,但通过使用参数得到了解决。 基本上,这是有效的:C++ 在函数中使用参数和声明有什么区别,c++,parameters,C++,Parameters,我遇到了一个对我来说毫无意义的问题,但通过使用参数得到了解决。 基本上,这是有效的: void Inventory:: showInventory(char input) { //char input[80]; //cin >> input; //char inventoryRequest[] = "i"; //int invent = strcmp (input,inventoryRequest); //compare the player
void Inventory:: showInventory(char input)
{
//char input[80];
//cin >> input;
//char inventoryRequest[] = "i";
//int invent = strcmp (input,inventoryRequest);
//compare the player input to inventoryRequest (i) to see if they want to look at inventory.
if(input == 'i')
{
cout<< "\nYou have " << inventory.size() << " items.\n";
cout << "----------------Inventory----------------\n";
cout<< "\nYour items:\n";
for (int i= 0; i< inventory.size(); ++i)
cout<< inventory[i] << endl;
}
cout << "\n-----------------------------------------\n\n\n";
}
void Inventory::showInventory(字符输入)
{
//字符输入[80];
//cin>>输入;
//char inventoryRequest[]=“i”;
//int invent=strcmp(输入,库存请求);
//将玩家输入与inventoryRequest(i)进行比较,看看他们是否想查看库存。
如果(输入='i')
{
库特
^这允许参数传递
这意味着您可以调用someInv.showInventory('s')
,并将一些值传递给该方法,而传入的值将被分配给input
,以便在该方法的本地范围内使用
^这不是;它只是在方法的局部范围内声明input
,但不能从方法外部为input
赋值
此外,这实际上改变了方法的名称。因此,调用如someInv.showInventory('s')
将失败,除非您有一个名称相同的方法需要一个char
^这允许参数传递
这意味着您可以调用someInv.showInventory('s')
,并将一些值传递给该方法,而传入的值将被分配给input
,以便在该方法的本地范围内使用
^这不是;它只是在方法的局部范围内声明input
,但不能从方法外部为input
赋值
此外,这实际上改变了该方法的属性。因此,诸如someInv.showInventory('s')
之类的调用将失败,除非您有一个同名的方法,该方法需要一个char
。在第一个示例中,input
是一个参数。它将由调用者使用他们选择传入的任何值初始化
在第二个示例中,input
是一个未初始化的变量。在赋值之前读取它(正如您所做的那样)是未定义的行为,因为它当时包含垃圾。在第一个示例中,input
是一个参数。调用方将使用他们选择传入的任何值初始化它
在第二个示例中,input
是一个未初始化的变量。在赋值之前读取它(正如您所做的那样)是未定义的行为,因为它当时包含垃圾。在第一种情况下,调用函数时将把char
传递给函数:inventory.showInventory('i')
。这正是参数的用途。它们允许您将一些值传递到要处理的函数中,就像数学中函数的参数一样
在第二种情况下,您有一个未初始化的变量input
,您试图将其与'i'
进行比较,从而导致未定义的行为。在第一种情况下,您将在调用函数时将char
传递到函数:inventory.showInventory('i')
。这正是参数的用途。它们允许您将一些值传递到要处理的函数中,就像数学中函数的参数一样
在第二种情况下,您有一个未初始化的变量input
,您试图将其与'i'
进行比较,导致未定义的行为。两者实际上都在局部范围内。oops,很好地捕捉到了这种模糊性。oops,很好地捕捉到了这种模糊性
void Inventory:: showInventory()
{
char input;
//char input[80];
//cin >> input;
//char inventoryRequest[] = "i";
//int invent = strcmp (input,inventoryRequest);
//compare the player input to inventoryRequest (i) to see if they want to look at inventory.
if(input == 'i')
{
cout<< "\nYou have " << inventory.size() << " items.\n";
cout << "----------------Inventory----------------\n";
cout<< "\nYour items:\n";
for (int i= 0; i< inventory.size(); ++i)
cout<< inventory[i] << endl;
}
cout << "\n-----------------------------------------\n\n\n";
}
void Inventory:: showInventory(char input)
void Inventory:: showInventory()