C语言之强大的结构体

一,struct 自定义类型介绍

一门语言通常先定义基本数据类型,还有很多自定义类型,不可能由语言一一实现。于是乎,给出一个struct关键字,开放自定义类型权限,于是便有了所有类型。此之谓“一生二,二生三,三生万物”。

二,结构体类型定义

1,无名结构体类型

不带来多余的类型名,只可在定义类型时定义变量。

#include<stdio.h>
#include<string.h>

struct Student
{
  char name[100];
  char sex;
  int age;
  float high;
}stu1;//构造新类型的同时定义变量

int main()
{
  strcpy(stu1.name,"Geng");
  stu1.sex='M';
  stu1.age=20;
  stu1.high=170;
  printf("Name:%s\nSex:%c\nAge:%d\nHigh:%.1f\n",
  stu1.name,stu1.sex,stu1.age,stu1.high);
  return 0;
}
2,有名结构体类型

定义新类型名,在作用域内随处可用

#include<stdio.h>
#include<string.h>

struct Student
{
   char name[100];
  char sex;
  int age;
  float high;

};

int main()
{

  struct Student stu1;//使用"有名的"新结构体类型名定义变量
  strcpy(stu1.name,"Geng");
  stu1.sex='M';
  stu1.age=20;
  stu1.high=170;
  printf("Name:%s\nSex:%c\nAge:%d\nHigh:%.1f\n",
  stu1.name,stu1.sex,stu1.age,stu1.high);
  return 0;
}
3,结构体别名构造类型

使用typedef给结构体构造类型定义别名

typedef struct Student
{
  char name[100];
  char sex;
  int age;
  float score;
}STU;//给结构体构造类型struct Student定义别名为STU
STU stu1,stu2;//使用结构体构造类型别名定义结构体变量

注意:

  • 结构体构造类型“{ }”后以“;”结尾

  • 结构体类型名称为“struct + 结构体名”

三,结构体变量初始化及成员访问

凡是基本数据类型,既可在定义时初始化,也可先定义,之后再赋值;
凡是构造类型,只能在定义时初始化,不允许之后整体赋值。

1,初始化+以点运算符访问各成员

这里写图片描述
结果如下:
这里写图片描述

2,初始化+以指针向成员运算符访问成员

这里写图片描述
结果如下:
这里写图片描述

3,解引用符访问结构体成员

这里写图片描述
结果如下:
这里写图片描述

三,结构体赋值

对于相同类型的结构体可以直接赋值
这里写图片描述
结果如下:
这里写图片描述

数组整体赋值的实现:
这里写图片描述
结果如下:
这里写图片描述

四,结构体数组

利用结构体数组实现存储4名学生的信息。
这里写图片描述
输出4名学生信息:
这里写图片描述

内存分布:
这里写图片描述

注意:实际在内存中字符串存储在data ro数据区,在结构体中连续内存放的是字符串常量的地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值