【问题标题】:The correct way to pass pointers to functions in C将指针传递给 C 中函数的正确方法
【发布时间】:2013-10-27 02:29:11
【问题描述】:

下午所有, 我写了一大段不能正常工作的代码。我要做的是将数组作为参数传递给函数,这样当我从函数返回时,我可以继续使用数组。我下面的代码给了我一个 SEG 错误或“非法指令”错误,它是随机的。如果这是将数组传递给函数的方式,是否有人可以提供一些建议。

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

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

【问题讨论】:

    标签: c arrays function pointers arguments


    【解决方案1】:

    更正确的做法如下声明函数,指定第三个参数

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

    并将其称为

    getFile( file, sMsg, nodeCount ); 
    

    【讨论】:

    • +1, sMsg 只说数组从哪里开始,你需要用另一条信息来说明里面有多少元素
    • 您可能想在您的答案中添加类似 Kos 的解释。但是:+1 指出了 OP 问题的可能根本原因。
    【解决方案2】:

    改变

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

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

    但这不会 SEGFAULT,它是一个编译时错误。

    【讨论】:

    • 因此,由于 OP 似乎正在观察运行时错误,因此指出代码 sn-ps 中的“错字”更适合作为注释。
    猜你喜欢
    • 1970-01-01
    • 2015-10-07
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2012-02-22
    相关资源
    最近更新 更多