这是错误:
str.c: In function ‘values’: str.c:15:3: error: dereferencing pointer to incomplete type ‘struct inv’
t -> a = &w;
这是代码:
#include<stdio.h>
void values(struct inv *t, int , float);
void main()
{
struct inv {
int a;
float *p;
} ptr;
int z = 10;
float x = 67.67;
values(&ptr, z, x);
printf("%d\n%.2f\n", ptr.a, *ptr.p);
}
void values(struct inv *t, int w , float b) {
t -> a = &w; /* I am getting error here, not able to assign value
using the arrow operator */
t -> p = &b;
}
答案 0 :(得分:2)
您在struct inv
功能中定义了main
。结果,它在main
之外不可见。这意味着函数struct inv
声明中提到的values
是一个不同的结构,还有一个尚未完全定义的结构。这就是你得到“不完整类型”错误的原因。
您需要将定义移到函数之外。
此外,t->a
的类型为int
,但您要为其分配int *
。在此处删除address-of运算符并直接指定w
的值。
#include<stdio.h>
struct inv {
int a;
float *p;
};
void values(struct inv *t, int , float);
void main()
{
struct inv ptr;
int z = 10;
float x = 67.67;
values(&ptr, z, x);
printf("%d\n%.2f\n", ptr.a, *ptr.p);
}
void values(struct inv *t, int w , float b) {
t -> a = w;
t -> p = &b;
}