我正在尝试发送一个结构数组作为参考,但由于某种原因我不能让它工作,因为它能够传递它而不能作为参考(&)
这是我的代码:
#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;它会起作用......但它没有。
请帮助。
答案 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;
}
更新
要解决以下评论,
struct mystruct record[]
应该是struct mystruct & record