我一直在試圖從一個函數用下面的代碼和它接受一個結構,並返回一個指向它的指針的功能的指針返回到一結構:返回一個指針從一個函數構造
#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'而不是'name'。 這裏可能存在什麼問題? 我已經在讀一本書,說在功能上的身體利用這一點:
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不要故意! – Lincoln