c - 给定一个结构数组,如何将结构中一个成员的所有值传递给函数
问题描述
给定一个结构数组,有没有办法通过
emp[0].hourly_wage, emp[1].hourly_wage, emp[2].hourly_wage, emp[3].hourly_wage, emp[4].hourly_wage
作为浮点数组的函数?
是否可以传递一个只包含“hourly_wage”成员而不是“OT”成员的浮点数组......而不仅仅是将值复制到一个单独的浮点数组中,然后将其传递给函数。
struct employee
{
float hourly_wage;
float OT;
};
struct employee emp[5];
解决方案
不,你不能,但你可以创建另一个指针数组,指向结构数组中的那个成员,并将这个指针数组传递给函数。
执行:
#include <stdio.h>
#define ARR_SZ 5
struct employee
{
float hourly_wage;
float OT;
};
void test_fun(float **arr) {
for (int i = 0; i < ARR_SZ; ++i) {
printf ("%f ", *arr[i]);
}
printf ("\n");
}
int main(void) {
struct employee emp[ARR_SZ];
for (int i = 0; i < ARR_SZ; ++i) {
emp[i].hourly_wage = 2.0f; // dummy value
emp[i].OT = 1.0f; // dummy value
}
float *hw_arr[ARR_SZ];
for (int i = 0; i < ARR_SZ; ++i) {
hw_arr[i] = &(emp[i].hourly_wage);
}
test_fun(hw_arr);
return 0;
}
或者简单地将结构数组传递给函数并访问该成员:
#include <stdio.h>
#define ARR_SZ 5
struct employee
{
float hourly_wage;
float OT;
};
void test_fun(struct employee *arr) {
for (int i = 0; i < ARR_SZ; ++i) {
printf ("%f ", arr[i].hourly_wage);
}
printf ("\n");
}
int main(void) {
struct employee emp[ARR_SZ];
for (int i = 0; i < ARR_SZ; ++i) {
emp[i].hourly_wage = 2.0f; // dummy value
emp[i].OT = 1.0f; // dummy value
}
test_fun(emp);
return 0;
}
推荐阅读
- javascript - 在 Firestore 中调用 set 时捕获异常
- javascript - 为什么当我将小部分 React 应用程序重新制作为 Redux 时列表消失了?
- javascript - 事件源不代表每个客户端/会话的信息
- python - 导入 Eof 模块时出错(udunits 错误,os 错误)
- ios - 使用 swift 处理在 iOS 上的 PDF 查看器内单击的链接
- asp.net-core - 从 .NET Core 3.1 转换为 .NET 5
- c++ - += 运算符是如何在 C++ 中实现的?
- c++ - 使用指针成员变量引发异常时的内存泄漏
- python - 散景交互未在 Google 实验室内正常显示
- c# - 使用 EWS for Exchange 2013 获取收件人电子邮件地址