首页 > 解决方案 > 如何在函数的其他地方使用变量的值?

问题描述

我有一个特定的程序,可以让您注册成员并将他们的姓名和出生日期保存到数组中。进行此注册的特定功能使用以下代码;

char regmember (struct member a[])
{

    int i = 0;
    char wow;
    do
    {
        //registration
        printf("\n Do you want to add someone else (y/n):");
        scanf(" %c",&wow);
        i++
    }while(wow != 'n');

    int nrofmembers = i;
    return nrofmembers;
}

-> 我通过使用保存用户输入

scanf("%s",a[i].name)scanf("%d",&a[i].ID);

这就是我使用i++. 如您所知, int 变量i将保存已注册成员的数量。我想利用这些信息在其他函数的循环中使用它,所以我继续将值保存i在另一个 int 变量中......

int nrofmembers = i;

我的问题是,我不能nrofmembers在其他地方使用该变量(),即使我尝试返回它,有什么建议吗?

标签: cvariables

解决方案


你需要在参数中获取i并返回新值,你可以这样做

int regmember (struct member a[], int i)
{
    ... use and modify i

    return i;
}

或将其用作输入输出变量

void regmember (struct member a[], int * i)
{
    ... use and modify *i
}

在第一种情况下,调用者例如做:

int i = 0;

for (...) {
  ...
  i = regmember(..., i);
  ...
}

在第二种情况下:

int i = 0;

for (...) {
  ...
  regmember(..., &i);
  ...
}

推荐阅读