C-使用指针和;功能

C-使用指针和;功能,c,C,关于C函数,我遇到了一些麻烦 这就是功能: int* CalcMeanPower(int Media[], int** MeanPowerArray, int righe, int colonne) { int i=0, k=0; int ArrayPower[] = {0, 0, 0, 0}; for (i=0; i<righe; i++) { for (k=0; k<colonne; k++) { ArrayPower[k] = Ar

关于C函数,我遇到了一些麻烦

这就是功能:

int* CalcMeanPower(int Media[], int** MeanPowerArray, int righe, int colonne)
{
  int i=0, k=0;
  int ArrayPower[] = {0, 0, 0, 0};

  for (i=0; i<righe; i++)
  {
    for (k=0; k<colonne; k++)
    {
      ArrayPower[k] = ArrayPower[k] + MeanPowerArray[i][k]  ;
    }
  }

  for (k=0; k<colonne; k++)
  {
    Media[k] = (ArrayPower[k]/righe);
  }

  return Media;
}
当我尝试运行程序时,它会在尝试执行以下操作时返回分段错误:

 for (k=0; k<colonne; k++)
  {
    Media[k] = (ArrayPower[k]/righe);
  }

用于(k=0;ku在传递到函数之前未初始化VetorreMedia。由于未初始化,媒体也指向未知位置,因此分割错误。VetorreMedia应该有一些默认值。

如果在调试器中运行此操作,您将看到segfault发生的位置,并能够从那里解决它


Google
gdb备忘单
开始使用。

您需要为变量/数组保留内存

RefMeanPower
只是一个普通的未初始化指针数组。
VettoreMedia
只是一个普通的未初始化指针

for(int i = 0; i < N; ++i)
  RefMeanPower[i] = malloc(sizeof(int) * num_mean);

// don't forget to free after usage
for(int i = 0; i < N; ++i)
  free(RefMeanPower[i]);


ArrayPower
足够大吗?
colonne
的值是多少?很可能是在数组的末尾。关闭时过于本地化。您没有显示如何为int*RefMeanPower[N]分配存储;int*VettoreMedia;谢谢大家!现在它可以工作了!这只是我程序的一小部分。我正在做RFID定位的算法,也许这几天我会发布一些其他问题。。我如何初始化这种向量指针?'char**RefIdTagArray;char**IdXTagArray;'@x539真的提前谢谢!谢谢x539!现在有效!这只是我程序的一小部分。我正在做一个RFID定位算法,也许这几天我会发布一些其他问题。我如何初始化这种向量指针?@x539真的提前谢谢!在谷歌上找到了它。谢谢你们!
for(int i = 0; i < N; ++i)
  RefMeanPower[i] = malloc(sizeof(int) * num_mean);

// don't forget to free after usage
for(int i = 0; i < N; ++i)
  free(RefMeanPower[i]);
VettoreMedia = malloc(sizeof(int) * N);

// don't forget to free after usage
free(VettoreMedia);
int VettoreMedia[N];
// frees automatically when leaving scope