C语言-结构体-详细介绍附有代码讲解

结构体:允许用户自己指定这样一种数据结构,它由不同类型的数据组合成一个整体,以便引用,这些组合在一个整体中的数据是互相联系的,这样的数据结构称为结构体.

说白了就是你按照自己的想法在一个单元里添加几种不同的类型,

结构体的定义:

例如

struct student  //这里的student是类型名,就是相当于你下边的 int float char 一样
{
    int num;
    char name[20];
    int age;
    float score;
    char addr[30];
}STU;  //STU则是称之为结构体的变量名 ,比如上边的 num name score                     //只有定义类型,系统才可以分配内存单元

结构体的使用:

既然我们已经定义好了一个结构体,那怎么去使用这个结构体呢

例如:结构体变量名.成员名

struct point //point 是结构标记,用于结构命名-类型名
{
	int a=3;
	int b=5;
}OUT; //OUT是变量名,


在main函数中
printf("%d",OUT.a);

 结构体的初始化:

//在结构体中进行初始化
struct student
{
    long int num;
    char name[20];
    char sex;
    char addr[30];
}a = {89031, "Li Lin", 'M', "123 Beijing Road"};

//但是这个的结构体的末尾不一样了,外部来进行初始化。
。。。。。。
。。。。。。
   char sex;
    char addr[30];
};
struct student a = {{10101, "Li Lin", 'M', 18},

//main函数中来进行初始化
void main()
{
    struct student a;
    stu.num = 12345;
    strcpy(stu.name, "Li Li"); //字符串不能直接输入,最好运用这个库函数
    stu.score[0] = 67.5; //数组的话添加数组的下标
    stu.score[1] = 89;
    stu.score[2] = 78.6;
}

结构体数组-数组的初始化 

 //对于结构体数组的初始化,数组在外
struct student
{
    int num;
    char name[20];
    char sex;
    int age;
    float score;

};
struct student stu[3];
//对于结构体数组的初始化,数组在里边
struct student
{
    int num;
    char sex; 
}stu[3] = { {1,'A'},{2,'B'},{3,'C'} };

这个是能正常运行的 

 C语言-结构体-详细介绍附有代码讲解_第1张图片

**指向结构体数组的指针(数据结构用) 

#include 
#include 
#include 
 
struct student
{
    long num;
    char name[20];
    char sex;
    float score;
};
 
void main()
{
    struct student stu_1;
    struct student *p;  //定义一个相同类型的指针,*同类型*
    p = &stu_1;
    stu_1.num = 89101;
    strcpy(stu_1.name, "Li Lin");
    stu_1.sex = 'M';
    stu_1.score = 89.5;
    printf("NO. :%ld\nname: %s\nsex:%c\nscore:%f\n", stu_1.num, stu_1.name, stu_1.sex, stu_1.score);
    printf("NO. :%ld\nname: %s\nsex:%c\nscore:%f\n", (*p).num, (*p).name, (*p).sex, (*p).score);
//对于指针其实可以换个方式
(*p).score 等价于 p->score
  
}

其实这里又回归了指针的定义

int a = 5;

int *p;   //指针就是专门指向地址的

p=&a;//利用指针指向a的地址

*p其实就等价于a

 C语言-结构体-详细介绍附有代码讲解_第2张图片

随后扩展的就是指向数组的指针 

struct student *p;
    for(p=stu; pnum, p->name, p->sex, p->age);

 指针 函数 结构体的三个结合部分

#include 
#include 
#include 
//#define FORMAT "%d\n%s\n%f\n%f\n%f\n"

struct student
{
    int num;
    char name[20];
    float score[3];
};
void print(struct student stu)  //同样在这个函数中也是来一样的类型的
{
    printf("%d\n%s\n%f\n%f\n%f\n", stu.num, stu.score[0], stu.score[1], stu.score[2]);
    printf("\n");
}
void main()
{
    struct student stu;
    stu.num = 12345;
    strcpy(stu.name, "Li Li");
    stu.score[0] = 67.5;
    stu.score[1] = 89;
    stu.score[2] = 78.6;
    print(stu);  //调用一个函数
} 

其实更多是针对于复习

文章摘录来自:C 结构体 | 菜鸟教程

 

你可能感兴趣的:(c语言)