使用指针将结构数组传递给函数

时间:2016-09-18 23:15:35

标签: c function struct pass-by-reference

我正在尝试发送一个结构数组作为参考,但由于某种原因我不能让它工作,因为它能够传递它而不能作为参考(&)

这是我的代码:

#include <stdio.h>
#include <string.h>

struct mystruct {
    char line[10];
};

void func(struct mystruct record[])
{
    printf ("YES, there is a record like %s\n", record[0].line);
}

int main()
{
    struct mystruct record[1];
    strcpy(record[0].line,"TEST0");
    func(record);    
    return 0;
}

我认为只有通过调用函数func(&amp; record)并将func函数参数更改为&#34; struct mystruct * record []&#34;它会起作用......但它没有。

请帮助。

1 个答案:

答案 0 :(得分:-2)

我认为你的指针和参考概念已经混淆了。

func(&record)将传递变量记录的地址而不是参考。

传递指针

#include <stdio.h>
#include <string.h>

struct mystruct {
    char line[10];
};

void func(struct mystruct * record)
{
    printf ("YES, there is a record like %s\n", record[0].line);
    // OR
    printf ("YES, there is a record like %s\n", record->line);
}

int main()
{
    struct mystruct record[1];
    strcpy(record[0].line,"TEST0");
    func(record); // or func(&record[0])
    return 0;
}

如果您必须传递参考,请尝试此

#include <stdio.h>
#include <string.h>

struct mystruct {
    char line[10];
};

void func(struct mystruct & record)
{
    printf ("YES, there is a record like %s\n", record.line);
}

int main()
{
    struct mystruct record[1];
    strcpy(record[0].line,"TEST0");
    func(record[0]);
    return 0;
}

更新

要解决以下评论,

  • 引用在纯C中不可用,仅在C ++中可用
  • 原始代码中的“错误”是struct mystruct record[]应该是struct mystruct & record