一开始的错误代码
#include<stdio.h>
typedef struct list{
int value;
list* p_last;
}list;
int main(){
list L;
L.value=10;
system("pause");
return 0;
}
结果在VS编译的时候报错
error: .L的左侧必须具有结构/联合类型
将鼠标放在list上面时,p_last前面的list类型也被框起,就误认为二者等价。。。结果问题就在于p_last前面的list类型。
在list p_last前面再加一个struct 就可以了。
修改后代码
#include<stdio.h>
typedef struct list{
int value;
struct list* p_last;//在list 前面加个struct
}list;
int main(){
list L;
L.value=10;
system("pause");
return 0;
}
随便提一下:typedef 是给数据类型取别名,list是struct list{} 的别名,也就是说 list与struct list{}
等价,这样声明的好处是我们在声明struct list类型变量的时候就不用在声明struct了,如上文的list L;
如果有错误,欢迎指出>O<