C语言 - 结构体

什么是结构体

结构体是C编程中的一种用户自定义的可用的数据类型,它允许你存储不同的数据类型项. 在我个人的理解中,C语言中用结构体来保存一个数据类型就好像是面向对象编程中模型层的数据模型,同样的都是保存不同的类型数据项.

定义结构体

定义结构体,必须使用struct关键字,下面是定义结构体的普遍格式.

struct [structure tag]{
      member definition;
      member definition;
      .....
      member definition;
} [one or more structure variables];

在上面定义结构体的格式中, [structure tag]结构体的名字是可选的, [one or more structure variables]结构体变量也是可选的.但是,必须注意的是[structure tag]和[one or more structure variables]必须出现一个.

struct Person1{
    
    char name[20]; //[20]指定字符串的长度
    char sexy[20];
    int  age;
};

struct Person2{
    
    char name[20];
    char sexy[20];
    int  age;
    
}person2;

struct {
    char name[20];
    char sexy[20];
    int  age;
}person3;

struct {
    char name[20];
    char sexy[20];
    int  age;
}person4 = {"lisi","male",13};

struct Person5{
    char name[20];
    char sexy[20];
    int  age;
    struct Person5 per5;
}person[5];

struct {
    char name[20];
    char sexy[20];
    int  age;
    
}person6[2] = {{"zhangsan","male",23},{"wangwu","male",33}};

访问结构体成员

使用struct name varName来创建一个结构体变量,使用点语法来访问结构体的成员

void person1(void){
    //创建并初始化结构体变量
    struct Person1 per = {"chensheng","male",34};
    //访问结构体变量
    printf("per name = %s, per sexy = %s, per age = %d \n",per.name,per.sexy,per.age);
    
}

void person2(void){
    
    struct Person2 person2 = {"wuguang","male",56};
    printf("person2 name = %s, person2 sexy = %s, person2 age = %d \n",person2.name,person2.sexy,person2.age);
}


void person3(void){
    //这也是一种赋值方法
    strcpy(person3.name,"zhangsanfeng");
    strcpy(person3.sexy,"male");
    person3.age = 23;
    printf("person3 name = %s, person3 sexy = %s, person3 age = %d \n",person3.name,person3.sexy,person3.age);

}

结构体作为参数

您可以把结构作为函数参数,传参方式与其他类型的变量或指针类似。

//声明一个结构体并初始化
struct Person4{
    char name[20];
    char sexy[20];
    int  age;
}person4 = {"lisi","male",13};
//声明一个函数
void person7(struct Person4 per);

int main(int argc, const char * argv[]) {
    
    //把结构体的变量传递出去
    person77(person4);
    
    return 0;
}

void person7(struct Person4 per){
    
    printf("per name = %s, per sexy = %s, per age = %d \n",per.name,per.sexy,per.age);
    
}

也可以通过把结构体指向指针,以指针的方式作为参数进行传递.注意如果结构体是指针的话,那么就要通过 -> 这个符号来访问结构体成员了.

struct Person4{
    char name[20];
    char sexy[20];
    int  age;
}person4 = {"lisi","male",13};

void person77(struct Person4 *per);


int main(int argc, const char * argv[]) {
    
    person77(&person4);
    
    return 0;
}

void person77(struct Person4 *per){
    
    printf("per name = %s, per sexy = %s, per age = %d \n",per->name,per->sexy,per->age);
    
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 谨记 什么是价值?或许没有多少人能够明白,其实价值并不是实际存在的,它应该是一种体现,比如为城市点缀最美好的一面而...
    长风留言阅读 2,508评论 0 15
  • 语言------结构体 枚举学习,有需要的朋友可以参考下。 结构体 枚举 1.局部变量: >定义.在代码块内部定...
    朱森阅读 951评论 0 0
  • 结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。...
    超级小江阅读 2,444评论 0 7
  • 结构体: 1,基本定义: 成员列表:有基本数据类型定义的变量或者构造类型的变量example: struct st...
    酸菜牛肉阅读 1,617评论 0 0
  • 在现实生活中,一组数据往往具有很多种类型的数据。例如,学生登记表,它里面包含了姓名、学号、成绩、班级等等,而这些元...
    一叶之界阅读 691评论 0 1