【发布时间】:2016-04-21 06:45:58
【问题描述】:
我一直在尝试使用以下代码和一个接受结构并返回指向它的指针的函数从函数返回指向结构的指针:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct mystruct
{
int id;
char name[10];
};
//this is the function
struct mystruct *return_pointer(struct mystruct a)
{
struct mystruct *ptr;
ptr = &a;
return ptr;
}
int main()
{
struct mystruct tag, *p;
tag.id = 12;
strcpy(tag.name,"abcd");
printf("Values are: %d\t%s",tag.id,tag.name);
p=return_pointer(tag);
printf("\nValues through pointer: %d\t%s", p->id, p->name);
return 0;
}
但是当我尝试使用返回的指针访问结构的值时,它无法正常工作。它只显示“id”而不显示“名称”。 这里可能存在什么问题? 我读过一本书,说要在函数体中使用它:
ptr = (struct mystruct *)malloc(sizeof(struct mystruct));
ptr-> id = a.id;
strcpy(p->name,a.name);
//struct 'a' is argument to function
return ptr;
如果这是正确的解决方案,那么为什么会这样呢?
【问题讨论】:
-
return_pointer函数的目的是什么?这似乎毫无意义。 -
@MichaelWalz 不要故意!