C语言_结构体

结构体

 一.1.结构体定义 

结构体是一种自定义的数据类型

struct关键字声明一个结构体

    struct point {
      // 结构体的成员
      int x;
      int y;

    };

2.定义一个结构体变量

    类型变量名初始值

    需要注意struct+结构体的名字是变量类型

    初始值的顺序与声明结构体内的成员顺序一致

    struct point p1 = {3, 5};

3.结构体如何访问成员

    引入一个新的操作符.

    先找到结构体变量p1,再通过.操作符访问y的成员

      p1.y = 50;
      printf("%d\n", p1.x);

         4.类型重定义

typedef int DT;
相当于给int起了一个别名叫DT, 但是原来的类型名也可以用
例一:

定义一个尺寸的结构体,size结构体重新定义为Size

   第一种方式

typedef struct size{
int width;
int height;
}MYSize;
    第二种方式

struct size{
int width;
int height;
};
typedef struct size MYSize

例二:

   定义一个结构体

struct soldier {
char name[20];
// 军衔
char rank[20];
// 血型
char bloodType[2];    
};

  

       struct soldier类型重新定义成Sodier

typedef struct soldier Soldier;


    定义四个结构体变量
Soldier s1 = {"项羽", "元帅", "B"};
Soldier s2 = {"关羽", "上将", "O"};
struct soldier s3 = {"张苞", "少校", "S"};
struct soldier s4 = {"弹头", "伙头兵", "AB"};


结构体可以直接赋值

Soldier s5 = s2;


结构体数组内存放的都是结构体变量

Soldier array[4] ={s1, s2, s3, s4};
 

  通过结构体变量来找到血型的成员array[3].bloodType

       1.先找到结构体变量 array[3]

   2.通过.操作找到bloodType

array[3].bloodType;

 

  array[3].name是什么----->name字符串的首地址

printf("%s\n",array[3].name);

 

      如何修改name这个字符串-->改成XXX

strcpy(array[3].name, "张张张");
// array[3].name = "张张张"; 错误的 字符串的修改需要用字符串相关函数

 

  定义一个打印一个结构体变量函数

// 从规范上来讲, 不应该省略函数声明
void printStruct(Soldier s);
void printStruct(Soldier s)
{
// 函数内可以直接访问形参的成员
printf("%s %s %s\n", s.name, s.rank, s.bloodType);
}

   打印结构体数组的函数

void printArray(Soldier array[], int count);
void printArray(Soldier array[], int count)
{
    for (int i = 0; i < count; i++) {
        printStruct(array[i]);
   }
}

    调用打印结构体信息的函数

printStruct(array[3]);

  

        调用打印结构体数组的函数

printArray(array, 4);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值