c - 如何在函数的其他地方使用变量的值?
问题描述
我有一个特定的程序,可以让您注册成员并将他们的姓名和出生日期保存到数组中。进行此注册的特定功能使用以下代码;
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
在其他地方使用该变量(),即使我尝试返回它,有什么建议吗?
解决方案
你需要在参数中获取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);
...
}
推荐阅读
- angular - 如何使用 Angular 项目作为依赖项
- angular - 角度防止卡内一个字段上的点击事件
- c# - 在 ASP.Net Web API 中处理 404 异常
- r - 简单频率后检测对
- node.js - 发布请求中的 Mailchimp API 限制
- python - Python subprocess.check_output() 用于一般 shell 命令
- javascript - 避免使用 promise 进行递归渲染?
- openoffice-writer - 如何使用 TinyButStrong TBS 在 OpenOffice ODT 文档中选择标题部分
- php - 使用超出范围的数值更新 laravel SQL 表:
- java - 使用邮递员发布查询 graphql