带有指针的带指针结构的c代码有什么问题?

时间:2020-09-12 20:40:01

标签: c pointers struct

有人可以解释这段代码有什么问题吗?为什么我会收到编译错误?以及如何解决这个问题?

struct recPtr_t{
int * l;
int * w;
};
typedef struct recPtr_t recPtr;

recPtr r1 = {0,0};
recPtr * rPtr1 = &r1;
printf("Default dimensions of rectangle are %d and %d\n", rPtr1->l, rPtr1->w);

警告:

rectangle.c:28:59: warning: format specifies type 'int' but the argument has type 'int *' [-Wformat]
printf("Default dimensions of rectangle are %d and %d\n", (int *)rPtr1->l, (int *)rPtr1->w);
                                            ~~            ^~~~~~~~~~~~~~~
rectangle.c:28:76: warning: format specifies type 'int' but the argument has type 'int *' [-Wformat]
printf("Default dimensions of rectangle are %d and %d\n", (int *)rPtr1->l, (int *)rPtr1->w);
                                                   ~~                      ^~~~~~~~~~~~~~~

2 个答案:

答案 0 :(得分:0)

您定义要保留的结构(int *),但是在初始化结构时,您以整数形式传递。那就是问题所在。这只是一个警告,因此编译器会让您知道自己做了什么。它将0用作(int *)的值,稍后会引起问题。

答案 1 :(得分:0)

您应该将结构更改为包含整数,而不是整数指针

您应该拥有:

struct recPtr_t{
int l;
int w;
};

这将解决您的问题。