错误:“->”的类型参数无效-打印也是结构的结构字段的地址

时间:2018-08-20 17:59:54

标签: c struct printf

我有一个这样的结构:

struct my_struct {
    struct_a a;
    struct_b b;
};

我正在尝试打印my_struct类型的变量的地址以及它的字段ab的地址,它们也是结构:

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”)

我的理解有什么问题?

1 个答案:

答案 0 :(得分:4)

问题实际上出在您的main函数中,其中mystruct 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