博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习的境界
阅读量:4145 次
发布时间:2019-05-25

本文共 860 字,大约阅读时间需要 2 分钟。

学习是有境界的,下面以C语言中的结构型为例简单分析。

第一种境界:理解了。

结构型是自定义数据类型,与C语言中基本的数据类型如int的作用相同,用于定义变量。(变量是内存中存储单元的标识,C语言中通过变量使用计算机的内存。)

结构型只是通过对已有数据类型的组合产生的新的类型。定义一个结构型的变量,实际上是定义了多个基本的变量,但这些变量属于一个集体。

结构型可以做参数,也可以有结构型指针变量,但是因为结构型变量仅是一个代表,包括了多个变量,使用时(输入输出、参与多种运算时)必须具体到成员变量。

在定义结构型时可以包含指向自身的指针类型。构成链表的多个结构型变量在逻辑上就有了先后顺序,并且可以用循环处理了。

第二种境界:比较了。

结构型与数组相似。

数组是大家比较熟悉的数据类型,也用于定义变量。

数组也是通过对已有数据类型的组合产生的新的类型。定义一个数组变量,实际上也是定义了多个变量,这些变量属于数组这个集体。数组元素的类型相同,而结构型成员变量的类型可以任意。

数组做参数时会退化为指针类型。两个数组变量之间不能相互赋值,而两个结构型变量之间却可以,即使结构型的成员变量有数组。数组在使用时也必须具体到数组元素。

结构型中可以有数组,数组的类型可以为结构型。

第三种境界:思考了。

数组变量之间为何不能相互赋值,而两个结构型变量之间却可以?

数组变量之间相互赋值在技术上没有任何问题,因为两个结构型变量之间就可以相互赋值。数组间不能相互赋值是在设计C语言时基于某种考量而故意为之的。问题变成了,C语言中为何这样设计呢?

这样做有什么好处呢?

效率高。数组做参数时退化为指针类型,原本要传递的大量数据现在只需传递几个字节的数据就可以了,既高效又省空间。

另外,即使同样为整型数组,但长度可能不同,要保证两个数组相互赋值时不出错也太累了。

数组与结构型本质上不同。

数组算作数据结构,所属元素在逻辑上有次序关系,可以用循环依次处理各个元素。

结构型只是多个数据的包装,所属成员仅表示同属一个集合,没有次序关系。

 

转载地址:http://qddti.baihongyu.com/

你可能感兴趣的文章
flash xmlsocket policy 问题
查看>>
Flash纯脚本生成饼图
查看>>
CSS 进度条(含进度)
查看>>
ActionScript ExternalInterface.call 参数有字符串 "/" 的解决方案
查看>>
JavaScript 与 ActionScript 3.0 交互的一些问题
查看>>
Quartz的cron表达式
查看>>
在 表格中 用 css 设置 cellpadding 和 cellspacing 属性
查看>>
SimplePlayer例程中报告与wsprintfWInternal有关的错误
查看>>
DOS:先进入 bat 文件的路径,然后执行 bat 文件,然后回到当前目录
查看>>
dom4j 的 DTD 验证,以及输出乱码问题解决方案
查看>>
SVN for Eclipse plugins 中文转英文 (新方法)
查看>>
Angular.JS + Require.JS + angular-async-loader 来实现异步加载 angular 模块
查看>>
怎么设置可以把dropdown设成可以输入数据
查看>>
Javascript Versions
查看>>
用javascript动态调整iframe高度
查看>>
subclipx v1.02 - 简单实用的轻量级多维剪贴板工具
查看>>
让Java程序自带JRE
查看>>
最近写了一个简单的面向对象的脚本语言 Q 语言
查看>>
可完全定制的Javascript日历 (Callback 实现)
查看>>
一切都是对象
查看>>