美文网首页
C语言 - 结构体

C语言 - 结构体

作者: KKWong | 来源:发表于2017-04-25 14:46 被阅读22次

什么是结构体

结构体是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);
    
}

相关文章

  • C语言和OC的结构体(struct)

    Struct(结构体) 1.结构体定义 2.结构体变量 3.结构体数组 4.C语言结构体指针 5.C语言共用体 6...

  • C语言结构体用法很多,坑也很多

    C语言可谓是编程界的传奇语言,历经几 十 年,依然排名前列。 本文主要说的是C语言中的结构体,结构体是C语言中重要...

  • C语言结构体

    结构体 本文介绍C语言结构体,struct 在C++中功能相对C较多,相当于类,这里暂时不讨论,本文单独讨论C语言...

  • 嵌入式学习笔记19.11.25

    c语言结构体 结构体一般定义全局变量 struct stu{//struct 定义结构体 stu 结构体名称 in...

  • 12-Go语言结构体

    结构体 结构体的基本概念 什么是结构体Go语言中的结构体几乎和C语言中的结构体一模一样都需要先定义结构体类型, 再...

  • C语言学习笔记-结构体占用内存大小的计算

    引言 结构体在C语言中虽然经常使用,但是怎么计算一个结构体占用多大的内存,很多C语言的新手都没注意过,其实C语言的...

  • 结构体与指针

    1.1 Linux C语言结构体 简介:本课程深入的讲解了C语言中,预处理是怎么回事,结构体和公用体又是如何使用及...

  • c语言中的结构体

    结构体是 C 语言主要的自定义类型方案,这篇就来认识一下结构体。 一、结构体的形态 C源程序(struct.c):...

  • 闲聊C语言结构体

    结构体是 C 语言主要的自定义类型方案,这篇就来认识一下结构体。 一、结构体的形态 C源程序(struct.c):...

  • 深入理解Runtime中的isa

    objc_object Objective-C 所有对象都是 C 语言结构体objc_object,这个结构体中包...

网友评论

      本文标题:C语言 - 结构体

      本文链接:https://www.haomeiwen.com/subject/xnsvzttx.html