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)

 

posted @ 2018-03-27 23:49  l_____py  阅读(153)  评论(0编辑  收藏  举报