首页 > 其他分享 >C语言学习入门 (八) 结构体和枚举

C语言学习入门 (八) 结构体和枚举

时间:2022-12-06 14:39:02浏览次数:42  
标签:定义 season 入门 struct C语言 枚举 变量 结构


结构体

它允许内部的元素是不同类型的

结构体的定义

//结构体类型:

struct

{

char

int

float

};

//定义一个结构体变量,定义变量时才分配存储空间

structPerson


struct

char *name;

int

} stu;


struct {   //省略类型,结构体变量名为stu

char *name;

int

} stu;

结构体的注意点

1.不允许对结构体本身递归定义

如下做法是错误的,注意第3行

1 struct

2     int

3     struct

4

2.结构体内可以包含别的结构体

3.结构体变量占用的内存空间是其成员所占内存之和,而且各成员在内存中按定义的顺序依次排列

结构体的初始化

1.

struct

{

char name[20];

int

float

};


structPerson person = {"a",28, 55.5f};

2.

struct

{

char name[20];

int

float

} person = {"a",28, 55.5f};

 只能在定义变量时 初始化

结构体的使用

person.age =22;// 这里的.运算符  优先级最高


structPerson p1 = {"a",28, 55.5f};

structPerson

结构体数组

跟结构体变量一样,结构体数组也有3种定义方式   ……person[5];

初始化与数组类似   struct Person person = { {}, {}, {} };

结构体作为函数参数

将结构体变量作为函数参数进行传递时,其实传递的是全部成员的值,

也就是将实参中成员的值一一赋值给对应的形参成员。因此,形参的改变不会影响到实参。//值传递

指向结构体的指针

* 结构体指针变量的定义形式:struct结构体名称 *指针变量名

* 有了指向结构体的指针,那么就有3种访问结构体成员的方式

  • 结构体变量名.成员名
  • (*指针变量名).成员名//因为 .优先级高,,所以要括起来
  • 指针变量名->成员名

void

{

    printf("p-name:%s\n",person.name);

    

struct Person *per = &person;

printf("p-age:%d\n", (*per).age);

    

    printf("p-weight:%.2f\n", per->weight);

}

枚举

它可以用于声明一组常数。当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型

枚举类型的定义

enum

枚举变量的定义

跟结构体一样,有3种方式定义枚举变量

>enum

enum


>enum

>enum

枚举使用的注意

> C语言编译器会将枚举元素(spring、summer等)作为整型常量处理,称为枚举常量。

> 枚举元素的值取决于定义时各枚举元素排列的先后顺序。默认情况下,第一个枚举元素的值为0,第二个为1,依次顺序加1。

enum

也就是说spring的值为0,summer的值为1,autumn的值为2,winter的值为3

>也可以在定义枚举类型时改变枚举元素的值

enum

没有指定值的枚举元素,其值为前一元素加1。也就说spring的值为0,summer的值为3,autumn的值为4,winter的值为5

enum

{

18, fall, winter

} season;

void

{   season =spring;//等价于 season = 0;  //默认从0开始

season = 9;

season = winter;//等价于 season = 20;

    printf("season= %d\n",season);

    

int *p = &season;

printf("p=%d\n", *p);

}

标签:定义,season,入门,struct,C语言,枚举,变量,结构
From: https://blog.51cto.com/u_11407799/5915738

相关文章

  • C语言学习入门 (二) 语句和运算符
    C语言的基本语句跟Java中的差不多循环语句(dowhile、while、for)条件语句(if 、if-else、switch)goto语句 (比如在循环外定义一个标记Exit:; 在循环内可以用gotoExit;......
  • 钉钉小程序与企业微信小程序快速入门
    最近开发了一款关于钉钉小程序与企业微信小程序企业办公工具,api跟微信小程序差不多,但应用载体不同,或多或少有些异同,由于临时学习开发,简单记录一下:钉钉小程序快速入门: ......
  • 递归实现指数型枚举
    递归实现指数型枚举从1∼n这n个整数中随机选取任意多个,输出所有可能的选择方案。输入格式输入一个整数n。输出格式每行输出一种方案。同一行内的数必须升序排列......
  • c语言实现乘法口诀
    #include<stdio.h>intmain(void){inti,j;for(j=1;j<10;j++)for(i=1;i<10;i++){if(i<j){if((i==2)......
  • 单片机C语言C51的语句
    1. if语句if语句是C51中的一个基本条件选择语句,它通常有三种格式:(1)if(表达式){语句;}(2)if(表达式){语句1;} else {语句2;}(3)if(表达式1){语句1;}else if(表达式2)(语句2;)else......
  • 【重温SSM框架系列】11 - Mybatis快速入门(JDBC、开发步骤,配置文件)
    Mybatis快速入门​​准备工作​​​​原始JDBC操作​​​​查询​​​​插入​​​​mybatis简介与开发步骤​​​​1.引入mybatis依赖包​​​​2.创建表和对应实体类​......
  • Android(Lollipop/5.0) Material Design(二) 入门指南
    官网地址:https://developer.android.com/intl/zh-tw/training/material/get-started.htmlApplytheMaterialTheme运用材料主题DesignYourLayouts 设计你的布......
  • C++入门(一)----Visual C++ 6.0和Visual Studio 2019 的安装与使用
    VisualC++6.0的安装与使用VisualStudio2019的安装与使用下载链接:​​​https://visualstudio.microsoft.com/zh-hans/free-developer-offers/​​​VisualStudio201......
  • React Native基础与入门(一)--搭建开发环境
    什么是ReactNative?ReactNative是Facebook开源的一套用于开发移动端跨平台App的技术框架,其代码托管在GitHub上,目前已有一千多名参与者向它贡献代码。有兴趣的可以去查看源......
  • ACM 的正确入门方式是什么?
    作者:数学lover链接:https://www.zhihu.com/question/51727516/answer/127265733来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。一些基......