结构体

结构体

1、结构体的定义

结构体是不同数据类型的集合

写法:

struct 结构体名{
    成员列表(类型名 成员名)
};
//以上共同称为结构类型
//例如
struct student{
    int ID;
    char name[20];
};

注意:

  1. 结构体类型与结构体变量是两个不同的概念,其区别如同int类型与int型变量的区别一样。
  • int x = 10;
  • struct student stu;
  1. 结构类型中的成员名,可以与程序中的变量同名,它们代表不同的对象,互不干扰。
#include <stdio.h>
struct student{
    int ID;
    char name;
    struct teacher{
        int age;
    }th;
};
//typedef struct student{
//    int ID;
//    char name;
//}stu;

int main(){
    int ID = 10;
    struct student stu;
    stu.ID = 666;
    stu.name = 'd';stu.th.age = 18;
//    stu stt = {123. 'a'}; 
    //第二种赋值方式
    //struct student stu = {10, 'd'};
    printf("stu.id = %d, sut.name = %c\n", stu.ID, stu.name);
    return 0;
}
  1. 结构类型中的数据项,既可以是基本数据类型,也可以是结构体类型

2、结构体的使用

  1. 对于上一个struct student的结构体,使用如下:
struct student stu; //定义
//使用如下
stu.id = 666;
stu.name = 'd';

或者使用如下方式:
struct student stu = {10, 'd'}; //这是在定义的时候赋的初值 
  1. 直接定义一个变量,省略struct student stu;这一条语句
struct student{
    int ID;
    char name;
}stu;
  1. 语言中用关键字typedef可以为数据类型定义一个别名。如typedef int INTEGER;,则标识符INTEGER就是int的一个别名,两者可以互换使用。
typedef struct student{
    int ID;
    char name;
}stu;

//这时的stu不是变量名,而是类型名,可以用来定义结构体变量 
stu danny;
danny.ID = 666;

3、结构体指针

通过指向结构变量的指针来访问结构变量的成员,与直接使用结构变量的效果一样。一般来说,如果指针变量pointer已指向结构变量var,则一下两种形式等价:

var.成员

pointer->成员

注意(左侧是变量用分量运算符,指针用指向运算符):

(1)分量运算符.左侧的运算对象,只能是结构变量,不能是指针。

(2)指向运算符->左侧的运算对象,只能是指向结构变量(或结构数组)的指针变量,否则都出错。

#include <stdio.h>

typedef struct student{
    int ID;
    char name;
}stu;

int main(){
    int ID = 10;
    stu stt = {123. 'a'}; 
    printf("stu.id = %d, sut.name = %c\n", stu.ID, stu.name);
    stu* Pstu = &stt;
    Pstu -> ID = 666;
        printf("stu.id = %d, sut.name = %c\n", stu.ID, stu.name);
    return 0;
}

补充:

.直接分量选择 双目操作符

-> 间接分量选择 双目操作符

4、结构体数组

结构体数组就是数组里面放的是结构体

struct student{
int ID, age;
}stu[10];

使用

stu[0].ID = 20;
stu[0].age = 18;
stu[1].ID = 15;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值