2013-10-18 83 views
0

Afternoon All, 我寫了一段代碼無法正常工作。我想要做的是傳遞一個數組作爲參數的函數,所以當我從函數返回時,我可以繼續使用數組。我的下面的代碼給我一個SEG故障或一個'非法指令'錯誤,它是隨機的。如果有人能夠給一些愛心,如果這是一個數組傳遞給一個函數。將指針傳遞給函數的正確方法C

struct message sMsg[nodeCount]; 
/* get contents into an array */ 
getFile(file, sMsg); 

void getFile (FILE *file, struct message sMsg*) { 
..... 
} 

回答

3

這將是更正確的聲明函數如下方式指定第三個參數

void getFile (FILE *file, struct message *sMsg, size_t n); 

,並把它作爲

getFile(file, sMsg, nodeCount); 
+1

+1,'sMsg'只能說明數組的起始位置,您需要使用另一條信息來說明有多少元素 – Kos

+0

您可能希望在答案中添加* Kos *的解釋。但是:+1指出OP問題的可能根本原因。 – alk

3

變化

void getFile (FILE *file, struct message sMsg*) 

void getFile (FILE *file, struct message *sMsg) 

但這不會內存設計缺陷,它是一個編譯時錯誤。

+0

因此,作爲OP似乎是觀察一個運行時間錯誤,指出代碼片段中的「錯字」更適合作爲評論。 – alk