自定义数据类型:结构体
自定义数据类型定义完成以后,等于内置函数。
1、结构体不能定义一个自身的普通成员变量,但可以定义一个指向自身的指针;
2、结构体普通变量通过“.”来访问成员;
3、结构体指针变量通过“->”来访问其成员。
例1:struct A
{
struct A g; //error 因为自身没结束,没法分配内存
struct A *p; //ok ,因为指针一定是4个字节
};
例2: int main()
{
struct Student stu1; //随机值
struct Student stu2={“liubei”,25};
struct Student stu3={“caocao”}; //年龄为0,聚合类型只初始化一部分,另一部分都为0
stu3.age=30;//曹操年龄为30
stu.name=”sunquan”;//error 字符串不能直接赋值
strcpy(stu3.name,”sunquan”); //ok
}
struct Student *pstu=&stu2; //类似 int *p=&a;
(*pstu).age=35;//’.’的优先级高于*,所以一定要加()
也可以写为:
pstu->age=35;
strcpy(pstu->name,”zhangfei”);
注:有两个自带“解引用”的符号分别是“->”“[ ]”.
struct A
{
int a;
int *b;
};
struct B
{
int c;
int *d;
struct A e;
};
int main()
{
struct B aa;
struct B *bb=&aa;
}
可以如下访问:
aa.c;
aa.d;
aa.e.a;
aa.e.b;
bb->c;
bb->d;
bb->e.a;
bb->e.b;