此函数接受一个int,并用该值填充10个int的数组,并返回指向该数组的指针。我怎么能做同样的事情,但返回对数组的引用?
int (*g(int n))[10]
{
int (*ptr)[10] = (int (*)[10])malloc(sizeof(int) * 10);
for (int i = 0; i < 10; i++) {
(*ptr)[i] = n;
}
return ptr;
}
像
这样的东西int (&h(int n))[10]
{
// How to do this
int (&ref)[10] = ???;
for (int i = 0; i < 10; i++) {
ref[i] = n;
}
return ref;
}
答案 0 :(得分:0)
同样的方式,但在返回之前取消引用它:
int (&h(int n))[10]
{
return *g(n);
}
或(简短地说)
int (&h(int n))[10]
{
int (*ptr)[10] = (int (*)[10])malloc(sizeof(int) * 10);
for (int i = 0; i < 10; i++) {
(*ptr)[i] = n;
}
return *ptr;
}
或更明确
int (&h(int n))[10]
{
int (*ptr)[10] = (int (*)[10])malloc(sizeof(int) * 10);
for (int i = 0; i < 10; i++) {
(*ptr)[i] = n;
}
int& ref = *ptr;
return ref;
}