结构体

2016-11-18  本文已影响1人  Coder007
结构体定义格式
/*
struct 结构体类型名称
{
    属性;
};
*/
struct Person
{
    char *name;
    int age;
    double height;
};

定义结构体变量
// 定义变量
struct Person p;
结构体初始化
// 定义的同时初始化
struct Person p = {"yaof", 20, 180.0};

// 先定义再初始化(逐个初始化)
struct Person p;
p.name = "yaof";
p.age = 20;
p.height = 180.0;

// 先定义再初始化(一次性初始化)
// 特别注意:需要进行强制转换,需要明确的告诉系统这个是结构体
struct Person p;
p = (struct Person){"yaof", 20, 180.0};

// 指定将数据赋值给指定的属性
struct Person p = {.age = 20, .name = "yaof", .height = 180.0};
结构体内存分析
定义结构体变量的方式
// 先定义结构体类型,再定义结构体变量
struct Person
{
    int age;
    char *name;
};
struct Person p;

// 定义结构体类型的同时定义结构体变量
struct Person
{
    int age;
    char *name;
} p;

// 定义结构体类型的同时定义结构体变量,并且省略结构体名称
// 弊端:没有名称,不能重复使用
// 优点:如果结构体只使用一次,可以使用该方法
struct
{
    int age;
    char *name
}p;
指向结构体的指针
// 定义一个指向结构体的指针
struct Person *sip;
sip = &p;
// 注意:如果想使用*sip代替p访问结构体属性的时候,需要加上括号(*sip)
// 因为运算符优先级:.的优先级比*高
(*sip).age = 30;

// 还有另一种访问属性的方式
// 结构体指针变量名称 -> 属性
sip -> age = 40;
sip -> name = "yaofc";
结构体数组
struct Person
{
    int age;
    char *name;
};
struct Person pps[2] = {
    {20, "zhao"},
    {30, "qing"}
};
pps[0].age = 30;
pps[1].age = 40;
值传递
// 结构体传值是值传递
struct Person
{
    int age;
    char *name;
};
struct Person p1 = {20, "zhao"};
// 这样传值是值传递,修改p2属性值,与p1无关
struct Person p2 = p1;
上一篇 下一篇

猜你喜欢

热点阅读