2013-10-18 124 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