有人可以解释这段代码有什么问题吗?为什么我会收到编译错误?以及如何解决这个问题?
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);
~~ ^~~~~~~~~~~~~~~
答案 0 :(得分:0)
您定义要保留的结构(int *),但是在初始化结构时,您以整数形式传递。那就是问题所在。这只是一个警告,因此编译器会让您知道自己做了什么。它将0用作(int *)的值,稍后会引起问题。
答案 1 :(得分:0)
您应该将结构更改为包含整数,而不是整数指针。
您应该拥有:
struct recPtr_t{
int l;
int w;
};
这将解决您的问题。