c - 表的指针表?
问题描述
我正在尝试从其他表构建一个引用表,如下所示:
//*** TABLE 1 ***
double ref_table1[2][3] = {{10, 5.100, 0},
{21, 17.620, 26}
};
double fit_table1[5][2] = {{0.020, 23},
{-0.450, 1},
{0.060, 2},
{0.098, 5},
{0.410, 1}
};
//*** TABLE 2 ***
double ref_table2[2][3] = {{10, 5.100, 0},
{21, 17.620, 26}
};
double fit_table2[5][2] = {{0.020, 23},
{-0.450, 1},
{0.060, 2},
{0.098, 5},
{0.410, 1}
};
(为了简化示例,此处的表格相同,但它们当然不同)
然后是我试图引用但不断出错的地方:
static double **tables[][2] = {{ref_table1, fit_table1},
{ref_table2, fit_table2}
};
然后我阅读了这个主题:
并尝试:
static double (*tables)[][2] = {{ref_table1[0], fit_table1[0]},
{ref_table2[0], fit_table2[0]}
};
但在这种情况下,我仍然无法弄清楚,如何正确地做到这一点。我也想知道这是否真的可能,因为 ref_tables 和 fit_tables 有不同的尺寸。我只是认为这是可能的,因为它们最终都是对“双重”的引用。有小费吗?
谢谢
解决方案
“ref”表和“fit”表的维度不兼容,因此没有适用于两者的“指向数组的指针”类型。您将需要struct
使用适当的“指向数组的指针”类型的成员定义一个类型。
struct reffit {
double (*ref)[3];
double (*fit)[2];
};
struct reffit tables[] = {{ref_table1, fit_table1},
{ref_table2, fit_table2},
};
您还可以向结构添加其他成员以保存每个表中的行数,以防行数可能不同:
#define ARRAY_LEN(x) (sizeof (x) / sizeof *(x))
struct reffit {
size_t nrefs;
double (*ref)[3];
size_t nfits;
double (*fit)[2];
};
struct reffit tables[] = {
{
.nrefs = ARRAY_LEN(ref_table1), .ref = ref_table1,
.nfits = ARRAY_LEN(fit_table1), .fit = fit_table1
},
{
.nrefs = ARRAY_LEN(ref_table2), .ref = ref_table2,
.nfits = ARRAY_LEN(fit_table2), .fit = fit_table2
},
};
推荐阅读
- javascript - Cheerio 没有在 Axios 获取请求中加载 HTML - 所有这些都在异步意图处理程序中
- javascript - jQuery - 选择 ID 包含某个字符串并且属于某个类的 div
- r - 用变量替换 if 语句的条件字符
- c++ - 交换和移动无限递归
- javascript - 如何显示来自这个 API 函数的数据?
- go - 我将如何优化在执行 Hash 时读取的代码并从头开始重新读取它?
- javascript - React Redux Firebase:firebase.auth(...).signOut(...).then(...).error 不是函数
- sql - 在带有 UNION 子句的 postgres 中使用 ORDER BY 的问题
- flutter - 使用 Flutter 安装 `flutter_twitter_login` 和 `TwitterKit` 时出现问题
- highcharts - 如何让我的最后一点在 highstock 中闪烁?