c - 如何引用在 .h 文件中初始化的二维数组并在 .c 函数中使用它?
问题描述
这是我的 .h 文件。我正在创建一个 12x1860 二维数组,我想将其填充到我的 .c 文件中。
/*
* spectrogramMatrices.h
*/
#ifndef SPECTROGRAMMATRICES_H_
#define SPECTROGRAMMATRICES_H_
//global variables
extern int binaryFingerprint[12][1860];
void makeBinFingerprint(int shortBinSpectrum[12][186], int count);
#endif /* SPECTROGRAMMATRICES_H_ */
在我的 .c 文件中,我想创建一个makeBinFingerprint()
函数,它用 10 个不同的 12x186 2d 数据段填充一个 12x1860 2d 数组。我真的很想将它存储在那个 extern int binaryFingerprint[12][1860]
2d 数组中。如下所示
void makeBinFingerprint(int shortBinSpectrum[12][186], int count){
int i;
int j;
for (i = 0; i<12; i++){
for (j = 0; j<186; j++){
binaryFingerprint[i][(j+(186*count))] = shortBinSpectrum[i][j]; // we're going to be storing a lot of zeros, which may be a problem!
}
}
}
你觉得我这样尝试有什么问题吗?谢谢
解决方案
该数组在标头中声明为未初始化。声明不是实例化;那就是您实际上根本没有创建数组。
在 .c 文件中,您需要一个实例化;
int binaryFingerprint[12][1860]; // << Instantiation
void makeBinFingerprint(int shortBinSpectrum[12][186], int count){
int i;
...
推荐阅读
- javascript - 比较和编辑数组
- android - Android - Dagger2 和 Hilt 的问题 - 无法提供 ViewModelProvider.Factory
- java - 如何在上一次点击和最近一次点击之间划一条线?
- android - 如何以编程方式从状态栏中删除活动通知?
- go - Curl 命令没有释放服务器资源 GoLang
- java - 在 Java 中实现 Pair 类的最佳方法
- microstrategy - MicroStrategy 默认以个人视图运行达析报告
- mysql - MySQL / MariaDB 将 COUNT(*) 放入等式
- java - 为什么 Thymeleaf 无法将表单输入绑定到对象字段?
- javascript - 通过键javascript过滤数组属性对象的对象