2013-02-18 80 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