【发布时间】:2016-09-18 23:15:35
【问题描述】:
我正在尝试发送一个结构数组作为参考,但由于某种原因我无法让它工作,因为它可以作为值传递但不能作为参考 (&)
这是我的代码:
#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(&record) 并将 func 函数参数更改为“struct mystruct *record[]”才能工作......但它没有。
请帮忙。
【问题讨论】:
-
“不起作用”,不是对您遇到的问题的非常有用的描述。请告诉我们你得到了什么输出。
-
当我尝试引用 this 时,错误有点奇怪,但就是这样:
-
C 没有引用传递,一切都是值传递。但是
func(record)已经将record数组作为指针传递。也就是说,它已经是您想要的“引用”(它没有复制整个结构数组)。 -
请edit 您的问题包括您遇到的具体错误。此外,您不需要在标题中添加标签。我们有标签。
-
了解数组和指针以及隐式转换。任何好的 C 书都应该详细说明。首先:不要像“按引用传递”那样思考,即使 iff 你也知道这不是实际发生的情况。想想“pass-by-pointer”(顺便说一句,少了 2 个字母)
标签: c function struct pass-by-reference