2013-02-18 88 views
-2

我对C函数有一些麻烦。C - 使用指针和函数for循环的分段错误

这是函数:

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; 
} 

这是我的呼叫从主功能:

VettoreMedia = CalcMeanPower(VettoreMedia,RefMeanPower,num_mean,N);

,其中各变量的定义如下:

int* RefMeanPower[N]; 
int* VettoreMedia; 
int N=4, num_mean=5; 

当我尝试运行它返回我分割故障而试图做方案:

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

能否请您给我解释一下我做错了什么?我已经通过网络搜索,但我找不到答案。这个函数只是我C程序的一小部分,但我确信它在这个循环中会出错!

请帮助..

+1

是'ArrayPower'足够大? '殖民地'的价值是什么?最有可能的是你要结束数组。 – cdarke 2013-02-18 16:51:11

+0

由于太局部化而关闭。 – djechlin 2013-02-18 16:54:44

+0

你不显示如何为int * RefMeanPower [N]分配存储空间; int * VettoreMedia; – OldProgrammer 2013-02-18 16:55:43

回答

1

ü没有初始化VetorreMedia befor传递给函数。由于未初始化,Media也指向未知位置,因此分段错误。 VetorreMedia应该有一些默认值。

0

如果你在一个调试器中运行它,你会看到你的段错误发生的地方,并能从那里解决它。

Google gdb cheatsheet上手。

+0

谢谢你们!现在它工作了!这只是我的计划的一小部分。我正在做一个RFID本地化算法,也许我会在这几天发布一些其他问题。 如何初始化这种矢量指针? 'char ** RefIdTagArray; char ** IdXTagArray;' @ x539 真的在此先感谢! – user2084030 2013-02-18 17:12:09

0

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

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]); 

你在哪里得到RefMeanPower[N][num_mean]上创造如此交换ki作为索引或Nnum_mean

VettoreMedia你可以做

VettoreMedia = malloc(sizeof(int) * N); 

// don't forget to free after usage 
free(VettoreMedia); 

int VettoreMedia[N]; 
// frees automatically when leaving scope 
+0

谢谢你x539!现在它工作了!这只是我的计划的一小部分。我正在做一个RFID本地化算法,也许我会在这几天发布一些其他问题。 如何初始化这种矢量指针? 'char ** RefIdTagArray; char ** IdXTagArray;' @ x539 真的在此先感谢! – user2084030 2013-02-18 17:16:51

+0

找到它googling ..谢谢你们! – user2084030 2013-02-18 17:23:35