c - 如何将指向在另一个结构内声明的结构的指针作为函数参数传递?

标签 c function pointers struct parameters

在我用 C 编写的一个应用程序中,我将一个结构声明为另一个结构的成员:

struct _test
{
    int varA;
    //...

    struct _small
    {
        int varB;
        //...
    } small;
} test;

现在我想创建一个访问上面varB的函数,但是我不想让它访问整个结构体test,也就是说,我不想做:

#include <relevant_header>

void myFunction()
{
    test.small.varB = 0;
}

相反,我只想将 small 结构作为参数传递给该函数;像这样:

#include <relevant_header>

void myFunction(struct _test::_small* poSmall)
{
    poSmall->varB = 0;
}

问题是我不知道该怎么做,也就是说,上面的代码编译不正确(我想它只是 C++ 语法)。那么我如何在 C 代码中执行此操作 - 将指针传递给在另一个结构内声明的结构?我无法在 SO 和 Google 中找到任何关于此的信息。

最佳答案

只是做:

void myFunction(struct _small *poSmall)
{
    poSmall->varB = 0;
}

struct _small 的范围不限于其外部结构。

关于c - 如何将指向在另一个结构内声明的结构的指针作为函数参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30309537/

相关文章:

c - 用 C 语言构建字符串

在运行时定义的 C++ 全局 extern 常量可跨多个源文件使用

PHP寻找一个从字符串中获取值的函数

python - 函数中文件路径的默认值给出 SyntaxError。变通?

c - 发送结构数组到函数

c - 宽度不兼容的变量

c - 如何使用函数推进数组基地址?

c++ - 需要循环中逻辑的建议

c - 使用 gcc -O2 优化如何解决问题 : pointer pointing nothing and having integer value as -23 in it, 消失了?

c - void* 以两种方式进行转换 : (Sometype_t*)(*ptr) vs. *((Sometype_t**)ptr),为什么只有第二种有效?