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