首页 > 解决方案 > 如何引用在 .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

解决方案


该数组在标头中声明为初始化。声明不是实例化;那就是您实际上根本没有创建数组。

在 .c 文件中,您需要一个实例化;

int binaryFingerprint[12][1860]; // << Instantiation

void makeBinFingerprint(int shortBinSpectrum[12][186], int count){
    int i;
    ...

推荐阅读