c - 使用指针访问结构成员

标签 c pointers struct typedef

我是 C 的新手。我正在尝试在 main 之外创建一个 typedef 结构,然后创建一个 typedef 的指针。然后将这个指针传递给另一个函数。但是我收到错误。这让我发疯。非常感谢你..

typedef struct rem_info
{
    char         ufrag[80];
    char         pwd[80];
    unsigned     comp_cnt;
    pj_sockaddr  def_addr[PJ_ICE_MAX_COMP];
    unsigned     cand_cnt;
    pj_ice_sess_cand cand[PJ_ICE_ST_MAX_CAND];
} rem_info;

void reset_rem_info(rem_info *prem)
{
    pj_bzero(prem, sizeof(rem_info));
}

int main()
{
    rem_info *prem;  
    reset_rem_info(&prem);

    return 0;
}

错误:

*WARNING**:ex7.c:51:1: warning: passing argument 1 of ‘reset_rem_info’ from incompatible pointer type [enabled by default]
 reset_rem_info(&prem);
 ^
ex7.c:41:6: note: expected ‘struct rem_info *’ but argument is of type ‘struct rem_info **’
     void reset_rem_info(rem_info *prem)

最佳答案

查看您的主要功能:

int main()
{
    rem_info *prem;  
    reset_rem_info(&prem);

    return 0;
}

您正在创建指向 rem_info 的指针并将其地址传递给 reset_rem_info。这意味着您正在传递一个指向 rem_info 的指针。要对其进行类型检查,您可以直接传递指针而不获取其地址。

int main()
{
    rem_info *prem;  
    reset_rem_info(prem);

    return 0;
}

但这可能会给您带来错误。您现在正在处理指向 rem_info 的未初始化指针。您可能想要的是创建一个实际的 rem_info 并将其地址(指向 rem_info 的指针)传递给该函数。

int main()
{
    rem_info prem;  
    reset_rem_info(&prem);

    return 0;
}

关于c - 使用指针访问结构成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28384914/

相关文章:

c++ - 解决-错误C2440 : 'initializing' : cannot convert from 'LinkedList *' to 'LinkedList'

c++ - WinApi 在每一帧中绘图

c - 像 C 中的一维数组一样对二维数组进行排序?

c - 从二维字符数组指针获取字符,该指针是 C 中结构指针的属性

c++ - 销毁具有指针值的 map 的正确方法

ios - 创建一种更简洁的方法来设置具有多个 init 的结构?

C - fread() 到缓冲区索引

c - 搜索 vector 中出现两次的所有整数

c++ - 子级访问同一父级的其他子级的元素

c - 我不明白为什么我不能像这样在末尾添加节点