结构中的结构和函数自变量中的指针

时间:2018-09-13 07:46:06

标签: c++

struct _s1 
        {
            uint32_t var1; 
            struct _s2 
            {
                uint32_t var2;
                uint32_t var3; 
            } s2;
        }
        struct _s1 s1;

可能有一个指向结构s1和f.e的指针。使用嵌入结构s2和主要是s1中的变量:

void funcS(_s1 *sTest) 
{
    sTest->var1 = 1; 
    sTest->s2.var2 = 4; 
}

问题:“ funcS”参数中的指针可能仅引用“ s2”结构,而无法使用var1f.e。 (以及s1中的其他类型)?

void funkcS(_s1->s2 *s2Test)
  • 它不能正常发布,仅供参考。必须在c ++ 11和C11中进行编译。 感谢您的任何建议。

2 个答案:

答案 0 :(得分:3)

您可以使用范围操作符::来访问嵌套范围,如_s1::_s2

void func2(_s1::_s2* ptr) { ... }

答案 1 :(得分:0)

您可以使用指针或引用。我还建议您在s1之外定义结构s2。

#define uint32_t int

struct s2{
    uint32_t var2;
    uint32_t var3;
};

struct s1{
    uint32_t var1;
    s2 _s2;
};

void funcS(s1 *sTest)
{
    sTest->var1 = 1;
    sTest->_s2.var2 = 4;
}

void funcSs2(s2 *sTest)
{
    sTest->var2 = 4;
}

void funcSs2ref(s2& sTest)
{
    sTest.var2 = 4;
}

int main(int argc, char const *argv[]) {
  s1 obj;
  funcSs2(&obj._s2);
  funcSs2ref(obj._s2);
  return 0;
}