文档章节

1. 结构

 小清年
发布于 2014/05/12 19:10
字数 635
阅读 6
收藏 0

1. 结构

1.1 结构特性
结构是一种复合类型,和之前的数组类似。不同的是数组中的数据类型相同,而结构中的数据可以不同。正是因为数组中保存的数据相同,所以可以通过下标(索引)来访问,而结构则不能通过索引来访问。
1.2 结构变量的声明
结构可以把相关联的变量保存在一起,这样会很方便。例如,我们可以把一个人的信息定义在一个结构中,这些信息可能有姓名、年龄、性别、住址等。结构中的变量成为结构的成员。结构的定义格式如下:
struct{
    char *name;
    int age;
    char *email;
}person1,person2;
这里定义了一个结构有三个成员,person1和person2是该结构类型的变量。可以通过点操作符(.)访问变量。例如:
    person1.name = "tom";
    person1.age = 20;
    person1.email="tome@gmail.com";
  
    person2.name = "kite";
    person2.age = 30;
    person2.email = "kite@gmail.com";
1.3 结构变量的初始化
可以在定义结构的时候对其变量进行初始化,下列代码定义一个点Point结构,具有两个成员x、y坐标。
struct{
    int x;
    int y;
}point1 = {20,30},
 point2 = {100,150};
可以通过点操作符访问结构成员。
 printf("point1.x=%d\n",point1.x);
 printf("point1.y=%d\n",point1.y);
1.4 结构类型
可以在定义结构时,给结构起一个名字,这样在后面就可以通过该名字,像定义int类型一样定义结构类型了。
struct person {
    int pid;
    char *name;
    int age;
};
struct person p1,p2;
p1.pid = 1;
p1.name = "tom";
p1.age = 20;
p2 = {2,"kite",30};
1.5 结构类型定义
可以通过使用typedef来定义结构类型,而不用再使用struct关键字
typedef struct person Person;
Person p1={1,"tom",20};
Person p2 = {2,"kite",30};
1.6 把结构类型作为函数的参数或返回值
例如,下面函数的参数和返回值都是一个结构类型。
struct person test(struct person p){
    p.pid = 2;
    p.name = "big tom";
    p.age = 21;
    return p;
}
测试代码:
struct person p = {1,"tom",20};
p = test(p);
printf("p.name=%s",p.name);
1.7 结构数组
结构数组是指结构中的元素是一个数组,可以使用结构数组来模拟一个简单的数据。例如,
struct person pers[] = {{1,"tom",20},{2,"kite",30},{3,"rose",40}};
1.8 结构的嵌套
结构的成员还可以是一个已经定义的结构,例如:
struct point {
    int x;
    int y;
};
 
struct rect {
    struct point p1;
    struct point p2;
};

该博客教程视频地址:http://geek99.com/node/1019

本文转载自:http://geek99.com/node/876#

上一篇: 2. 联合
下一篇: 4. 条件编译
粉丝 0
博文 70
码字总数 0
作品 0
门头沟
私信 提问
第二十二节:Java语言基础-详细讲解位运算符与流程控制语句

位运算符(二进制位运算) 左移乘以2,右移除以2,&为0和1,0为假,1位真,只要有0就为0,| 只要有1就为1,^ 为只要相同为0,否则为1。 三元运算符 格式:条件表达式?表达式1:表达式2; 条件...

达叔小生
2018/08/09
0
0
C语言-第八章、构造数据类型

8_1 结构体的概念和结构体变量 _1.1 结构体的概念 C语言中允许用户自己构造由不同数据类型的数据所组成的集合体,称为结构体。结构体属于数据类型,每一个结构体有一个名字,称为结构体名。一...

南风末
2016/11/05
30
0
C语言系列(六)结构体和联合体

转载自:https://blog.csdn.net/u011974987/article/details/52305364 结构体 在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为: 1 2 3 结构体是一种集合...

fybon
2018/06/20
0
0
C语言之offsetof宏和container_of宏

首先我们要明白一点通过结构体变量来访问结构体中的各个元素时,其本质上是 通过指针的方式来实现访问的,只不过是这个时候编译器帮自动帮我们计算了每个 元素与结构体起始地址之间的偏移量而...

科技小能手
2017/11/12
0
0
数据结构—概述

数据结构概述: 程序设计 = 数据结构 + 算法 数据结构:数据元素之间存在所有特定关系的集合,数据结构可以分为物理结构和逻辑结构 逻辑结构: (1)集合结构——元素同属于一个集合 (2)线...

翼动动空
2016/05/08
7K
0

没有更多内容

加载失败,请刷新页面

加载更多

最简单的获取相机拍照的图片

  import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import andr......

MrLins
46分钟前
4
0
说好不哭!数据可视化深度干货,前端开发下一个涨薪点在这里~

随着互联网在各行各业的影响不断深入,数据规模越来越大,各企业也越来越重视数据的价值。作为一家专业的数据智能公司,个推从消息推送服务起家,经过多年的持续耕耘,积累沉淀了海量数据,在...

个推
48分钟前
7
0
第三方支付-返回与回调注意事项

不管是支付宝,微信,还是其它第三方支付,第四方支付,支付机构服务商只要涉及到钱的交易都要进行如下校验,全部成功了才视为成功订单 1.http请求是否成功 2.校验商户号 3.校验订单号及状态...

Shingfi
51分钟前
4
0
简述Java内存分配和回收策略以及Minor GC 和 Major GC(Full GC)

内存分配: 1. 栈区:栈可分为Java虚拟机和本地方法栈 2. 堆区:堆被所有线程共享,在虚拟机启动时创建,是唯一的目的是存放对象实例,是gc的主要区域。通常可分为两个区块年轻代和年老代。更...

DustinChan
56分钟前
6
0
Excel插入批注:可在批注插入文字、形状、图片

1.批注一直显示:审阅选项卡-------->勾选显示批注选项: 2.插入批注快捷键:Shift+F2 组合键 3.在批注中插入图片:鼠标右键点击批注框的小圆点【重点不可以在批注文本框内点击】----->调出批...

东方墨天
今天
6
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部