以下函数有问题:
typedef struct Data1{
float result;
struct Data1* next;
} Data;
Data* f(Data* info){
Data item;
item.result=info->result;
item.next=info->next;
return &item;
}
我在这里注意到两件事:
- 返回值是一个本地值的指针。然而它仍然是一个指针——编译器给出一个警告:函数返回局部变量的地址。但这真的有问题吗?(我本身不返回本地值)
- 我相信这里的主要问题是这个函数假设复制数据结构。结果值可以,但是关于“下一个”指针,我相信在函数调用结束时指针不会改变,对吗?这就像在外部函数中均衡两个整数,应该
*(item.next)=*(info->next);
解决问题吗?
那么这里的主要问题是什么?是1和2吗?