我有一个这样的结构:
struct my_struct {
struct_a a;
struct_b b;
};
我正在尝试打印my_struct
类型的变量的地址以及它的字段a
和b
的地址,它们也是结构:
void some_function(my_struct *my) {
//....
printf("my addr: %p - a addr: %p - b addr: %p", my, (void *) &my->a,
(void *) &my->b);
}
int main() {
my_struct my; //my is initialized in a function...
//then, it is passed to some_function(...) bellow...
printf("my addr: %p - a addr: %p - b addr: %p", my, (void *) &my->a,
(void *) &my->b);
some_function(&my);
return 0;
}
我遇到以下错误:
错误:“->”的无效类型参数(具有“ struct my_struct”)
我的理解有什么问题?
答案 0 :(得分:4)
问题实际上出在您的main
函数中,其中my
是struct my_struct
的实例,因此对其使用->
运算符是无效的。将printf
调用改为使用.
:
int main() {
my_struct my; //my is initialized in a function...
//then, it is passed to some_function(...) bellow...
printf("my addr: %p - a addr: %p - b addr: %p", (void *)&my, (void *) &my.a,
(void *) &my.b);
some_function(&my);
return 0;
}
还请注意,main
必须返回int
。