我在编写一个函数时遇到了麻烦,该函数指定了指向全局嵌套结构地址的指针。 但我希望在一个函数内部完成,而不是在main中完成 请帮我写这个功能。提前致谢
#include "stdio.h"
typedef struct
{
int c;
}code;
typedef code* p_code ;
typedef struct
{
char a;
int b;
code krish;
}emp;
emp Global_Sam;
int main()
{
code tmpcode_krish;
code* pcode_krish;
pcode_krish = &tmpcode_krish;
printf("Goal %p %p \r\n ", &(Global_Sam.krish), &(Global_Sam).krish);
memset(pcode_krish, 0 , sizeof( code));
// pcode_krish = &Global_Sam.krish;
PointNestedStructToPointer(&pcode_krish);
printf("Goal=> both should be same => %p %p \r\n ", &(Global_Sam.krish), pcode_krish);
return 0;
}
下面,
=> pcode_krish = &Global_Sam.krish;
这将指向全局嵌套结构。但我需要在函数内部执行此操作,因此函数PointNestedStructToPointer
void PointNestedStructToPointer(p_code *dst )
{
dst = &Global_Sam.krish;
}
上面的函数并没有反映全局嵌套结构的确切地址,我已经打印了经验证的。请帮忙
答案 0 :(得分:2)
如果你想要相当于
dst = &src;
在一个功能中你有两个选择:
将指针的地址传递给函数:
void doit(code **p)
{
*p = &src;
}
// later
doit(&pcode_krish);
从函数返回指针并自行完成任务:
code *doit(void)
{
return &src;
}
// later
pcode_krish = doit();
答案 1 :(得分:1)
在dst
中进行作业时取消引用PointNestedStructToPointer()
:
*dst = &Global_Sam.krish;