将指针传递给结构

时间:2011-05-18 06:34:21

标签: c++ c pointers structure

您好  我有一个函数A ( xy * abc),它接受​​一个结构的指针。

typedef struct
{
int a;
char * b;
} xy;

typedef struct
{
xy c;
xy d;
} uv;

uv *sha;

如果我需要使用Acd调用函数uv,我应该如何传递参数?我使用以下函数调用函数A

A (&sha->c);
A (&sha->d);

这次通话是否正确?

请帮助我

3 个答案:

答案 0 :(得分:5)

如果uv是结构,而不是指向struct的指针,则需要执行A(&uv.c),但在您的情况下,uv是结构类型,而不是实际结构,你需要一个类型为uv的变量:

uv somevar;
A(&somevar.c);

答案 1 :(得分:2)

创建一个uv类型的变量,然后将其传递给函数:

uv var; 
A(&(var.c)); 

A(xy*) - >获取类型为xy的对象的地址 var.c - >返回类型xy的对象
&var.c - >返回返回的xy对象的地址

uv *sha;
A(&(sha->c));
A(&(sha->d));

A(xy*) - >获取类型为xy的对象的地址 sha->c - >返回类型xy的对象
&(sha->c) - >返回返回的xy对象的地址

答案 2 :(得分:1)

虽然看似正确,但我会这样做:

A (&(sha->c));
A (&(sha->d));

注意额外的parantheses;这些是为了增加更多的冗长,尽管编译器可能不需要那些。

相关问题