gpt4 book ai didi

c - 指向全局嵌套结构的函数

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:51 24 4
gpt4 key购买 nike

我在编写一个将指针分配给全局嵌套结构地址的函数时遇到了问题。但我希望在函数内部完成,而不是在 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;
}

上面的函数并没有反射(reflect)全局嵌套结构的确切地址,我已经打印了一个验证。请帮忙

最佳答案

如果你想要等同于

dst = &src;

在一个函数中你有两个选择:

  1. 将指针的地址传递给函数:

    void doit(code **p)
    {
    *p = &src;
    }

    // later
    doit(&pcode_krish);
  2. 从函数返回指针并自己做赋值:

    code *doit(void)
    {
    return &src;
    }

    // later
    pcode_krish = doit();

关于c - 指向全局嵌套结构的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4754845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com