您好
我有一个函数A ( xy * abc)
,它接受一个结构的指针。
typedef struct
{
int a;
char * b;
} xy;
typedef struct
{
xy c;
xy d;
} uv;
uv *sha;
如果我需要使用A
为c
和d
调用函数uv
,我应该如何传递参数?我使用以下函数调用函数A
:
A (&sha->c);
A (&sha->d);
这次通话是否正确?
请帮助我
答案 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;这些是为了增加更多的冗长,尽管编译器可能不需要那些。