c struct
- struct声明与class声明一样,都需要以分号(;)结束
struct struct_name { element_1 name; element_2 name; ...... };
- c语言和c++的struct使用方法有所不同
//c++里面struct和class是基本上一样的(似乎默认的成员一个是public一个是private) //并且c++在声明一个class/struct后可以直接用classname/structname来声明实例 struct/class tempname { values; functions(); }; tempname temp1,temp2; //而c语言当中却需要struct关键字 struct structname { values; }; //下面的是错误的 structname temp1,temp2; //需要以下面的方式声明 struct structname temp1,temp2; //不过可以在声明结构体时加上typedef关键字 //来设定别名,这样就可以直接用structname来声明实例
typedef struct structname { values; }typename; //注意此处意为为整个结构体设定别名而非struct关键字 //一定得记住 structname 只是个标记,想用 structname 声明实例仍需加上 struct 关键字 struct structname temp1,temp2; //而typename才是整个结构体的别名 //因此可以用typename直接声明实例 typename temp3,temp4;
- struct在创建时可以用大括号包围着的参数表初始化,但是之后不可这样赋值
struct struct_name tempname = {vale1, vale2, vale3, ...... } //right //下面的是错误的 tempname = {vale1, vale2, vale3, ...... } //syntax error!!!!!!!!!!!!!!!!!
在C语言中,下面四个运算符优先级最高:结构运算符“.”和“->",以及()和[]
struct { int len; char *str; } *p; 表达式 ++p->len 相当于 (++p)->len 而 *p->str 相当于 *(p->str) 或者 *((*p).x)