-1 c
我只是想学习C并试图理解结构和指针.我写的一个程序是编译错误如下:
:29:18:错误:要求成员'价格'不是结构或联合.
示例程序:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char *Title;
float price;
} Book;
int main()
{
int a = 10;
Book *HFJ = malloc(sizeof *HFJ) ;
HFJ->Title = "Head First Java";
HFJ->price = 200;
void *object;
object = &a;
printf("Value of object is %d", * (int*)object);
printf("Value of HFJ %f", HFJ->price);
object = HFJ;
(Book*)object->price = 300;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想你得到错误的那一行就是这一行
(Book*)object->price = 300;
Run Code Online (Sandbox Code Playgroud)
该错误是由于运算符优先级,其中"箭头"运算符的->优先级高于强制转换运算符.
这意味着你的陈述真的是这样的:
(Book*)(object->price) = 300;
Run Code Online (Sandbox Code Playgroud)
这意味着你试图取消引用void *变量object(这是不可能的),然后将price成员转换为Book *.
要纠正它的使用
((Book*)object)->price = 300;
Run Code Online (Sandbox Code Playgroud)