C 基础 - 结构

C语言提供 结构变量(struct variable) 来扩展表示数据的能力。

需求:创建一个图书目录。

打印每本书的各种信息: 书名,作者,价格,出版社等。

可以使用C结构来描述数据。

结构声明:描述了一个结构的组织布局。

1 struct book {            /* structure template: tag is book     */
2     char title[MAXTITL];
3     char author[MAXAUTL];
4     float value;
5 };                       /* end of structure template           */

并没有描述实际的数据对象,只是描述了对象由什么组成。

定义结构变量

结构有两层含义

一、结构布局

二、定义结构变量

/* 把library 声明为一个使用book结构布局的结构变量 */
struct book library  

或者可以这样写
struct book {    /* book标记可以省略 */
    char title[MAXTITL];
    char author[MAXAUTL];
    float value;
 } library;   /* 声明的右花括号后跟变量名 */   

/* book类型的结构数组 */struct book library[MAXBKS]; 

/* 声明初始化结构指针 */struct book * library; 

/* 赋值,需要加上取址符 */library = &suprise;                  

初始化结构

struct book library = {
  "C Primer Plus",
  "史蒂芬 普拉达",
  "80"
};

还可以使用初始化器来初始化成员

/* 只初始化book结构中 value成员 */struct book gift = {
  .value = 10.99
};

/* 按照任意顺序初始化成员 */
struct book surpise = {
  .value = 25.99,
  .author = "Steven",
  .title = "C Primer Plus"
};

访问结构成员

点来访问结构中的成员

library.value

.value  .author  .title 相当于结构的下标。

用指针访问结构中的成员

如果 him == &library, 那么him->income

如果 him == &library[0], 那么him->income 即是 library[0].income

另一种方法: & 与 * 是一组互逆运算

fellow[0].income == (*him).income   /*一定要加括号,因为.的优先级高*/

结构嵌套

struct names {      /* 第一个结构 */
  char fist[LNE];
  char last[LEN];
};

struct guy {
  struct names handle;   /* 结构嵌套 */
  char favfood[len];
  char job[LEN];
  float income;
};

struct guy fellow = {  {David Zhang},  "Fish",  "Software Engineer",  "9999.00",};

/* 访问嵌套中结构的成员 */fellow.handle.first

向函数传递结构的信息

结构之间可以相互赋值

联合是一种数据类型

枚举

typedef

时间: 2024-10-07 17:40:48

C 基础 - 结构的相关文章

黑马程序员---C语言基础---结构体

------iOS培训.Java培训.Android培训, iOS学习型技术博客,期待与您交流------ C语言基础---结构体 一.什么是结构体 介绍结构体之前,我想先简单介绍下数组.我想大家对数组都再熟悉不过了,顾名思义,数组就是将一些数据(元素)组合在一起,作为一个整体.使用数组需要注意的是这些元素必须是相同类型.而结构体和数组类似,也是将一些数据组合在一起作为一个整体,但是这些元素可以是不同类型.可以这么理解:结构体是更加灵活的数组,因为它允许元素是不同的类型. 实际生活中,如果我们要

C#语言基础——结构体和枚举类型

结构体和枚举类型 一.结构体(struct) 结构类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数.常数.字段.方法.属性.索引器.运算符.事件和嵌套类型的值类型.结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承. 用结构的主要思想是用于创建小型的对象,如Point和FileInfo等等.这可以节省内存,因为没有如类对象所需的那样有额外的引用产生.例如,当声明含有成千上万个对象的数组时,这会引起极大的差异. 结构体是一个变量组,将一组变量放在一起,

C#基础——结构体

集合:数组:同一类型,固定长度集合:不同类型,不固定长度 要使用集合,必须先引用命名空间:using System.Collections; 定义:ArrayList arr = new ArrayList(); 赋值:arr.Add("值/变量"); //object类型object类型:所有类型的基础类型(基类) 获取个数:arr.Count; 取值:arr[索引] 插队:arr.Insert(索引,值/变量) 移除:arr.Remove(值);arr.RemoveAt(索引);

2016.8.3 C#基础 结构体,枚举类型

结构体-枚举类型 一.枚举类型 枚举(enum)是值类型的一种特殊形式,它从System.Enum继承而来,并为基础类型的值提供替代名称.枚举类型有名称.基础类型和一组字段.基础类型必须是一个除char 类型外的内置的有符号(或无符号)整数类型(如Byte.Int32或UInt64).也可以说,枚举类型是一组常量的集合. 1.定义:Enum....{E} 枚举元素的默认基础类型为int.默认情况下,第一个枚举数的值为0,后面每个枚举数的值依次递增1.例如: enum meiju://枚举是常量的

c#基础 结构体、枚举类型

结构体 ~struct 定义: 结构体一般定义在Main函数上面,位于Class下面,作为一个类:一般情况Struct定义在Main函数前面,Main函数里面的地方都可以使用,参数前面加上public代表公用变量. 格式: struct +结构体的名称 { public int+变量名; public double+变量名: public string+变量名: } 以上就是定义一个结构体的格式,里面包含许多种数据类型,如整形int,字符串string,带小数点decimal等: 用法: (1)

UML基础—结构和组成

本文主要梳理了一下UML2中的各个图的逻辑划分,UML基础知识. 一.UML2的4个规范 二.UML2的13种模型图 分为3大类:行为视图.交互视图.结构视图 三.UML1和UML2各种视图对照 四.UML图应用 在软件系统的,需求分析.设计.实现中,可以作为标准化的图形建模工具,帮助系统分析人员.软件设计人员.开发人员等,更好的沟通交流. 示例: Donate捐赠 如果我的文章帮助了你,可以赞赏我 1 元,让我继续写出更好的内容)     (微信)                       

黑马程序员——java基础--结构

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一:结构 1.顺序顺序 2.选择顺序 3.循环顺序 二:具体实现 1.顺序执行 class shunxuDemo{ public static void main(String args[]){ int a = 1, b = 2; int sum = 0; sum = a + b; System.out.println("sum ="+sum); } } 所有语句按照从上到下的顺序执

C基础--结构体

C语言,结构体语法: 1.定义结构体类型: struct 结构体名称 { 成员类型 成员名称1; 成员类型 成员名称2; ... }; 例:struct Date { int year ; int month ; int day ; } 2.结构体在内存中 例一: struct Student { char *name;//指针占8个字节 int no;//int占4个字节 int age;//int占4个字节 }; struct Student s1 ; int length = sizeof

数据结构基础-结构体struct及类型别名typedef的使用

一.结构体的创建 在C语言中,实现数据结构的一种常用方法便是使用结构体(structure)其示例代码如下: struct stu { int num; char ch; }; struct表示创建结构体 stu为结构体名称,里面的内容是各种变量类型(可以嵌套struct),然后使用示例如下: struct stu s; scanf("%d", &s.num); printf("%d\n", s.num); 第一行表示创建结构为stu的结构体s,此后访问结构

OC基础--结构体 枚举做类成员属性

结构体  枚举作类的成员属性: 定义一个学生类 性别 -- 枚举 生日 入学日期  毕业日期  --  结构体 代码示例: 声明文件 Student.h: #import <Foundation/Foundation.h> typedef struct { int year; int month; int day; } Date; typedef enum { kGenderGirl = 0, kGenderBoy = 1, kGenderChunGe = 2 } Gender; @inter