【发布时间】:2023-04-02 12:01:02
【问题描述】:
我有以下代码:
struct data
{
int a;
int b;
};
void test2(struct data *my_data)
{
(*my_data).a=3;
(*my_data).b=4;
printf("%d %d\n", (*my_data).a, (*my_data).b);
}
void test(struct data *my_data)
{
(*my_data).a=1;
(*my_data).b=2;
test2(&my_data);
}
int main(void)
{
struct data my_data;
struct data *ptr;
ptr = &my_data;
my_data.a=0;
my_data.b=0;
printf( "%p %p ",&my_data.a, &my_data.b);
printf("%d %d\n", my_data.a, my_data.b);
test(ptr);
printf( "%p %p ",&my_data.a, &my_data.b);
printf("%d %d\n", my_data.a, my_data.b);
return 0;
}
我找不到阻止 gcc 向我显示以下内容的方法:
std.c:在函数“测试”中: std.c:25:3:警告:从不兼容的指针类型传递“test2”的参数 1 [默认启用] std.c:11:6:注意:预期为“struct data ”,但参数的类型为“struct data *”
我找不到在 test2() 中使用 struct 的方法。我必须创建一个指向指针的指针吗?如果是,我应该在 main 中执行吗?
【问题讨论】: