多维分析形式语言

2024-10-21

多维分析形式语言(精选3篇)

多维分析形式语言 篇1

0 引言

油气生产数据仓库系统针对油气田生产业务数据, 提供针对不同决策层所需要的多维数据分析结果, 而其所处地理环境复杂, 客户端类别多样, 决定了标准多维分析语言的功能发挥受限, 且容易导致系统设计的复杂性和冗余度过高。多维分析形式语言RM_MDX设计的目的在于实现油气勘探开发数据与用户的查询交互接口, 该查询语言需要在生产数据立方体的基础上, 展现形式多样且直观的多维分析结果, 提供上卷、下钻、切片、切块等多维分析功能。油气生产数据仓库使用雪花模式来组织多维数据集, 在建立维的结构时, 注重对层次结构的设计。在设计查询语言时要考虑这些特征, 同时也兼顾表达能力和易用性两方面的要求[1]。

1 油气生产数据仓库系统对查询语言的要求

设计油气生产数据仓库的查询语言有两种选择:一种是使用扩展的SQL语言, 根据系统的要求对SQL语言的语法结构做一些调整;另一种是使用MDX语言, 进行多维查询语言的设计[2]。

从易操作性和功能实现方面对SQL和MDX进行比较, 不难发现, 在数据仓库中进行多维数据分析时, 使用MDX语言更方便。首先, MDX语言站在数据立方多维模型的层次上, 而SQL语言是站在数据立方实现方式的层次上来描述查询;其次, MDX的语法描述比SQL要简单, SQL查询要描述繁多的投影属性和连接操作等, 而MDX语句可采用层次路径、枚举关键字等语法, 使语法描述尽可能简单[3];再次, MDX的语义描述比SQL要清晰, SQL语法不具有表现维和度量等多维特征的功能, 而MDX是一种能较好地描述多维查询语义的自然语言;最后, MDX能更好地描述返回的多维结果。

通过以上的比较分析, 可以认为在OLAP系统中MDX语言比扩展的SQL语言将更能有效地表达查询[4], 因而考虑使用前者作为油气勘探开发数据仓库系统的用户接口。

SQL Server Analysis Services中提供了多维表达式 (MDX) , 但该语言过于复杂。本文将以扩展MDX的思路, 并借助用户定义函数 (存储过程) 在服务器端提供的指定服务, 来实现基于油气勘探开发数据仓库多维概念模型的多维分析形式语言Reduced and Meliorative MultiDimension Expression (简化改进的多维表达式, 简称RM_MDX) 。

2 RM_MDX设计原则

在油气勘探开发数据仓库系统中, 执行多维分析的终端设备并不仅仅限于台式电脑和移动电脑, 还可能是其它一些便携设备, 例如掌上电脑、基于PC工业标准设计的小型行业专用商用PC, 以及其它一些硬件配置不高但是便于移动操作且安装着精简操作系统的查询终端等。这要求查询终端上所使用的多维分析表达式不能够过于复杂, 要具有良好的表达能力和基本的多维分析功能, 且安装使用简易, 对操作系统环境无过多要求。其OLAP分析服务流程如图1所示。

从油气勘探开发数据仓库的应用特点出发, 设计RM_MDX语言时应遵循4个基本原则: (1) 体现油气勘探开发数据仓库多维分析处理的特点, 重在应用; (2) 提供符合油气生产数据分析的功能集, 尽量降低其复杂度; (3) 对于某些特殊分析功能, 可以考虑使用多种手段扩充; (4) 便于接口模块解释执行, 方便与OLAP服务器的交互[5]。

3 多维分析形式语言RM_MDX设计

多维分析形式语言RM_MDX既要满足油气生产数据仓库的分析查询需求, 又要能够和主流数据仓库系统之间具备良好的用户接口。在充分研究标准MDX语法之后, 从MDX语言的语法集中抽取了适当的基本语法, 作为设计RM_MDX语言的基础, 并结合具体业务需求, 对多维分析查询语法做了一些扩展和形式限定。

RM_MDX语法的基本结构如下:

SELECT[, ]

FROM

[WHERE, …];

其中, 代表轴维度, 形式为:

::=[]ON (dimension_name)

::=[]ON (dimension_name)

也可以使用简化形式:

::=[]

::=[]

代表切片维度, 用来将返回的数据限定为特定维度和成员条件。代表数据立方名。

RM_MDX的优点主要表现在以下两个方面[6]:

(1) SELECT子句在MDX基础上的改进: (1) RM_MDX规定SELECT子句具备两个轴方向, 更加方便地实现了多维结果在二维空间上的展现; (2) 成员的关系通过层次名和属性值来定义, 有利于查询语义的表达, 并快速确定其层次关系。

(2) WHERE子句在MDX基础上的改进: (1) RM_MDX的切片维度采用更加灵活的设计。WHERE子句由多个切片维度组成, 切片维度与轴维度使用相同的结构, 均代表同一个维度上的信息, 这样将由单个成员构成切片维的元组; (2) 在切片维度定义中, 通过属性表达式来限制非层次属性, 这样在RM_MDX的切片分析中, 可以针对层次属性和非层次属性进行限制。

对MDX语言进行改进后, 形成了RM_MDX的基本语法。改进过程遵循了设计原则, 语言功能达到了预期的设计目标。

本文主要采取了以下两种方法来扩展RM_MDX的功能:

(1) 使用.NET用户自定义函数来改进MDX。在油气数据分析过程中, 经常会碰到类似这样的需求, 即管理者想要查询每年净利润和基于装载日期的利润累加总和。为了执行此类操作, 使用.NET编写自定义函数, 运行于服务器端, 调用多维分析指令时则将成员及其对应的值传递到形参列表。

(2) 使用AMO存储过程和AMOMD Server存储过程来改进MDX。在油气勘探开发数据仓库系统中, 改进MDX查询更多的是使用AMO存储过程和ADOMD Server存储过程。在分析油井生产数据时, 管理者有时仅需要在某一范围生产数据中取样, 比如返回区块1中所有油井列表中前10%的井生产数据, 以分析该区块中油井含水率的变化趋势。存储过程的引入, 使得RM_MDX能高效地实现此类多维分析功能。

4 RM_MDX解释模块设计与实现

解释模块介于前端查询分析工具与OLAP服务器之间, 它是RM_MDX与Analysis Services之间的接口, 其主要功能为:检查RM_MDX查询语句的词法、语法及语义;根据RM_MDX的语法规则将RM_MDX查询语句转换为标准多维表达式。RM_MDX解释模块架构如图2所示。

词法分析对MDX语句从左至右进行扫描, 按词法规则识别单词符号 (关键字、标识符、数字、运算符和特殊符号等) , 并产生用于语法分析的终结符流;过滤掉RM_MDX语句中的解释和空白 (由空格、制表符等引起) ;记录输入的RM_MDX字符串的位置信息, 以便出现词法或语法错误时, 出错处理模块可以报告输入MDX语句错误的具体位置。语法分析从词法分析子模块读入终结符流, 并从终结符流中识别各类语法成分, 根据设计的MDX文法, 找出MDX语句的结构从而检测MDX语句中的语法错误。如果检测出语法错误, 则调用出错处理模块进行处理;如果语法正确, 则根据语法分析所生成的动作序列构造MDX语句的语法树和符号表, 提供给语义处理部件使用。语义处理检查RM_MDX查询语句语法的正确性, 确认语句有意义[7]。当RM_MDX查询语句经过词法、语法以及语义检查后, 依据RM_MDX语法规则, RM_MDX查询语句字符串转换为标准查询符号串, 经由Analysis Services执行。

5 结语

多维分析形式语言RM_MDX在油气勘探开发数据仓库中的应用, 为油气生产数据多维分析提供了科学的技术支撑, 令系统在决策分析方面的功能更加强大和容易实现。特别是总体设计中采用的RM_MDX解释模块, 使得多维分析前端程序不仅可以运行于普通的计算机上, 而且能够将前端程序移植到瘦客户端机器上, 其应用范畴超越了标准MDX。其优点主要表现在:提供基本的查询分析功能;多种结果显示方式, 将多维查询的结果展示到二维空间上;提供了超越标准MDX的扩展功能;语法格式简单易用, 语义表达简洁清楚, 利于查询处理转换。

参考文献

[1]叶学芳, 何跃.石油钻井信息系统中多维分析设计[J].计算机应用与软件, 2010 (11) :16-19.

[2]曹忠升, 黄宇殊, 冯剑琳.多维查询语言DM_MDX编译器的设计与实现[J].计算机工程与应用, 2004 (9) :109-111.

[3]蒋旭东, 周立柱.数据仓库查询处理中的一种多表连接算法[J].软件学报, 2001 (2) :32-37.

[4]袁霖, 康慕宁.一个面向OLAP应用的多维数据查询语言及其在对象关系数据库中的实现[J].计算机工程与应用, 2004 (13) :182-184, 218.

[5]段江娇, 薛永生, 令狐荣珊.数据仓库的多维数据分析器设计与实现[J].厦门大学学报:自然科学版, 2002 (6) :697-700.

[6]黄宇殊.达梦联机分析服务器的查询语言及查询处理研究[D].武汉:华中科技大学, 2004.

[7]雷根华, 张平健, 奚建清.MDX编译器设计与实现[J].计算机应用, 2007 (12) :3035-3038.

油画形式语言规律分析 篇2

一、油画形式语言的发展演变史

1. 油画在西方的起源

根据史料的记载, 油画起源于十五世纪的欧洲。近年来人们发现十世纪的欧洲就有人用油类的颜料进行作画的史料, 虽然那时的颜料、技艺及作品并不成熟, 但足以证明油画的发展历史久远。

而油画的发展和更新换代很大程度上依赖了人们对材料的发现和绘画技艺的完善, 学术界上认为蜡画技术的“炽热画法”和“丹培拉”是油画发展史上的里程碑, 其中的绘画技艺如用色、用光、罩染技术等为后来油画发展起到了极大的作用。

后来尼德兰画家艾克兄弟不断革新油画技法, 详细对比分析前人所用的绘画颜料和画布等材料, 经过探索试验后发现利用亚麻油等快干油当作调和剂有着更好的效果, 并且凭借经验和反复比较试验得出一套较为完备的绘画技术, 是西方油画发展史上的伟大代表人物。

这些人对新材料和新画法进行不断挖掘, 很大程度上弥补了以前的材料缺陷, 在材料上完成了由蜡质到胶质再到油质的伟大转变, 使做出的油画具备色彩明亮、速干、保存时间长且不褪色等优良特点, 这种革新也促使油画这种表现力很强的独立画种能够在世界范围内广泛流传。

2. 古典主义油画

(1) 古典主义油画最为经典的创作时期当属文艺复兴时期, 在14到16世纪的文艺复兴时期内, 人文主义思想盛行, 人们主张解放人类, 推崇尊严、人的力量以及人的价值, 并且艺术家借助油画这种媒介宣传这种思想, 将人类自由的情感和艺术作品完美的结合, 形成了油画发展的巅峰时期。

这时涌现出了大批的油画画家, 如达芬奇、拉斐尔、马萨齐等画家, 他们重视画面的整体效果, 注重利用光影、色彩来体现空间感, 代表作品有蒙娜丽莎等。另外一类的绘画语言是利用线条、形状以及细节来作画, 这类的代表画家有荷尔拜因等。

(2) 17、18世纪的油画已经发展到一定的高度, 此时涌现出了一批具有时代特色的绘画技艺, 如巴洛克艺术和洛可可艺术。

巴洛克艺术含有浓厚的浪漫主义色彩, 深刻反映了当时的时代大背景, 既具有宗教主义色彩, 艺术家的丰富想象力和创作力也充分体现在作品上, 熟悉运用色彩、阴影、明暗对比、朦胧的造型等绘画手法进行绘制形成了独具特色的巴洛克艺术, 这一艺术风格经后人总结为四个特色:光线、心理、写实、幻觉。体现在作品上是经常运用光线来营造一种浪漫的氛围, 绘画的对象不仅包括上层资产阶级, 也包括了下层人民, 其中饱含着浓郁的宗教特色;且巴洛克艺术手法中强调人们的心理感受, 继承和发展了文艺复兴时期强调人的价值、人的思想这一特色, 使人物的心理和性格完整的体现在作品上。

洛可可艺术更加追求自由和创新, 在艺术手法上注重细节的突出, 因此洛可可的作品作为17、18世纪的艺术主流同时具有着华丽、纤巧等特点。

3. 现代主义油画

现代主义油画在形式语言规律上是视觉、知觉以及语言的革新与进化。其中划分为几个重要流派。

(1) 印象派

印象主义起源于19世纪的六七十年代, 在光学理论和科学技术的启发下, 艺术家越来越注重光影艺术, 将反射、明暗、固有色、透视等重要的色光原理更好的与油画绘画相结合, 探索色彩的美。

印象派的油画语言主要表现在以下几点:自然界物体的色彩是由光线决定的, 光线能够影响到物体的色彩;物体的色彩是由于反射造成的, 因而物体并没有特定的固有色;物体由于光线的强弱而形成不同的明度, 阴部和暗部并不是黑色, 可以通过反射的光线表现出来;所有的物体都是有光影响的, 与此同时光也能造成体积和空间的变化, 因此可以利用光来体现立体感。

(2) 野兽派

野兽派是追求自由、追求创作的典型代表, 他们运用强烈的色彩对比和夸张的造型设计来实现色彩的解放。其中的代表画家有杜飞、马蒂斯、马尔凯等人。他们注重画面整体的和谐性, 在这基础上尽量运用纯度高的色彩进行拼接以制造动人的效果, 更加强调人们通过作品能够在心理感受上达到共鸣。

(3) 立体派

与与野兽派追求色彩解放的目标相辉映的是立体派, 他们强调从物体的形态中解放, 他们与野兽派相组合使油画语言从传统的绘画语言中解放出来, 都是十九世纪最为前卫的画派。野兽派认为传统画法中都是通过某一角度对物体进行描绘, 而描绘出的便是片面的形象, 不呢个体现物体的完整性, 因而立体主义者试图通过几何学将物体的各个面、各个形态组合起来, 从而构造“完整”的物体。

因此, 立体派的创作手法大概有以下特点:熟悉运用了几何学;模拟视觉的真实性进行拼接;将物体的各个面进行拼接, 或许发生重叠, 造就了“四次元主义”;运用抽象的创作手法将人或物抽象成了圆形、球形、四边形等几何图案。

4. 后现代主义油画

20世纪七八十年代开始了西方的后现代主义。这是一场美学的革命, 人们对油画所孕育的语言表达开始重视, 并且强调油画中语言的创造力, 同时涌现出了新的绘画作品和流派, 包括意大利的超前卫派、发过的新表现主义等。

由于相隔时间较近, 且我们目前处于这个发展阶段中, 尚不可见它变革后的发展成效, 但它更加追求人文主义精神, 且在如今高科技技术的洪流下, 绘画艺术中融入了摄影艺术, 创作出了更加立体、层次更加分明的油画作品。它具有以下特点:具有折衷的多样化风格, 兼容以往艺术中的创作手法和世界各国的创作手段, 同时又将现代的摄影艺术和各种媒介、材料相结合, 油画语言没有鲜明的流派之分;具有巨大的信息量, 如今的画家熟悉了解传统绘画, 因此他们的潜意识中拥有着各个流派的影子, 再交织现代油画绘画的特色便创作出形形色色的作品;形象多样, 现代主义的绘画形象较多, 包括卡通、涂鸦、写实、抽象等形象进行绘制, 这种自由、多样的创作形象是对人的价值及尊严的极大肯定。

二、油画形式语言的基本构成要素

1. 点

点是绘画语言中最经常用到的视觉实体, 它构成了整个画面。它也是绘画中最经常用到的元素, 比如画家莫奈便用点彩来表现炽热的阳光, 梵高则用点来表现星空, 以他们为代表的印象派、新印象派以及后印象派十分注重点的使用。在画面中突出点具有丰富、活泼、布局生动的特点。

2. 线

线是绘画中反映自然形态最为直接的表现方式, 它对事物通过形态的描绘达到概括、组织的效果。而对线的色彩、虚实、曲直变化的运用则能很大程度上影响到画面的整体效果。在一些艺术家眼中也认为线是最为纯粹又最有生命力和表现力的重要元素。

3. 面

面在油画语言中相当于绘画作品的整体效果, 它是由点和线构成的整体, 无论面的造型是规则还是不规则, 它都有很强烈的形式感, 与之相关的构图结构、轮廓、整体的协调性都能影响到画面的效果, 给人强烈的视觉体验。

三、油画形式语言的规律

1. 光影变化

人们接受外界信息有百分之八十五是来自视觉的, 而视觉获取的信息都是有光线影响的。因此光线所造成的明暗变化、光影、以及色彩变化有效的区分出了平面绘画和立体绘画。光影的变化促使了写实主义的产生, 使画家看到了全新的世界, 从而创作出了更为逼真的作品。

光影的明暗变化能很大程度上影响人们的心理感情, 根据调查证实, 越是强烈的明暗对比越容易使人愤怒, 若是黑白对比则更容易使人惶恐不安。因此光影变化能有效表达心理感受。

光影明暗具有明确的象征意义。如人们用黑暗的色调代替人间, 画面中突出的蜡烛闪着光亮则象征了神明。

光影的明暗变化使画面更加逼真。画家们熟悉运用光影变化的规律和手法进行绘制, 使画面更加立体、逼真。

2. 色彩的作用

色彩能够给予人们视觉首要的冲击力, 也绘画作品中最具有感染力的语言。色彩具有极为重要的美学价值, 不仅给人强烈的视觉冲击, 对物体有强烈的象征作用, 还能有效的表达心理情感。

如今人们对色彩学进行专门的研究, 将其大致的划分为冷暖、轻重、远近几个种类, 因为各种色彩能够引起不同的心理转变和情感变化。各个色彩所产生的心理体验如下。

(1) 黄色来源于太阳和向日葵等物, 象征着光明、高贵、希望等, 是典型的暖色系。

(2) 绿色代表着森林, 象征着生活、健康、安全、生意盎然等, 是典型的暖色系。

(3) 红色象征着积极、勇敢、热烈等, 属于暖色系。

(4) 黑色象征着死亡、寂静、神秘、深邃等, 是典型的冷色系。

(5) 白色象征着纯洁、朴素、干净、虚无等。

(6) 灰色象征着深邃、神秘、不安全、中庸等, 属于冷色系。

(7) 蓝色代表着天空, 象征着希望, 光明, 也常常象征着忧郁。

轻重感是由明度造成的, 明度较高的颜色给人轻飘的感觉如红色、黄色;明度低的颜色给人厚重感如灰色、黑色。

冷暖感是由色系造成的, 暖色给人温暖的感觉如红色、橙色;冷色则给人寂静、寒冷的感觉如灰色、紫色。

色彩随着社会经济的发展和时代的进步也被赋予了更多的意义, 人们更多的受到新事物和新观念的影响, 脱离了曾经的地域限制, 比如绿色因时代发展的需要被赋予了和平的含义;黄色因农业的发展象征了收获。

3. 整体的和谐性

油画作品的整体关系有许多, 其中包括画面的比例关系、绘画构图关系、色彩关系以及造型变化等。可以概括为以下几类。

(1) 比例关系。比例关系包括长短比例、明暗比例、冷暖比例、远近比例等, 而美术作品中最为经典的比例是黄金比例。

(2) 色彩关系。绘画中运用到了大量的色彩, 而色彩间的关系包括冷暖关系、纯度关系以及明暗关系, 色彩之间有效的组合能充分表达感情。

(3) 主次关系。绘画中要主次分明, 着重描绘主要内容, 营造出更好的整体效果。

4. 色彩结构

色彩搭配的和谐、统一才能使画面整体协调。色彩的结构营造分为色彩对比和色彩协调。其中色彩的对比包括纯度对比、明度对比、面积对比、冷暖对比;而色彩协调包括主色调调和、中性色调和、面积调和、光影调和等方法。

色彩搭配中根据各个色彩的特点进行搭配, 无论是运用对比的手法还是协调的手法都是为了营造整体的画面感和层次感, 使油画形式语言更加具有创造力。

5. 视点位置

视点位置是绘画艺术的重要组成部分, 欣赏者欣赏一副油画作品的着眼点便是视点位置, 也是能与画家产生共鸣的重要原因。视点位置的选择主要有以下几种。

(1) 平视构图。平视构图是最为常见的构图方式, 也是常规效果, 容易给人们形成身临其境的感觉。

(2) 俯视构图。仰视构图能够有效丰富画面的层次感, 给人产生盛大的心理体验。

(3) 仰视构图。能突出画面中人物的崇高感, 这种手法常常运用到宗教绘画中以突出圣母的形象。

6. 时空

时空是三维之外的第四维, 很难在油画作品中表达出来。但在油画作品中一旦表达出时空就会给人强烈的心理感受。比如《石工》中所呈现的静止画面能给人强烈的心理冲击;动态的过程是体现出人物正在运动的过程, 通过动态的造型体现出时间的变化。

7. 对比呼应

矛盾是推动事物发展的主要原因, 也正是矛盾使油画作品具有生命力。对比的手法不仅运用在写作中, 同时也运用到了油画绘画中。对比呼应的手法能够形成强大的张力, 营造出强烈的感染效果, 同时也给人醒目的视觉冲击, 丰富画面的层次感。

油画中的对比呼应包括黑白对比、虚实对比、空间对比、肌理对比等情况, 在对比的同时还需要进行呼应以求同。

呼应的方法包括绘画内容上的和谐呼应、色彩的协调呼应、线条与画面穿插的协调呼应等。

不管是对比的手法还是呼应的手法都是为了营造画面的和谐感, 也是为了使油画形式语言更加丰满, 更加具有表现力和张力。

8. 构图中心

构图中心是油画作品中的重要元素, 也是油画中线条、画面等所有要素的视线交合点, 同时达到了突出画面中心的重要作用。突出构图中心的方式主要有以下几点。

(1) 位置突出。位置突出的手法常常运用在景色描绘中, 且位置突出时常常运用到“黄金分割点”的方法, 给人造就舒适的视觉体验和关注点。

(2) 集中突出。构图中心不一定是某一个点, 可以是某个物体或是某个区域, 比如油画作品《勺子》中便突出了整个勺子, 使勺子成为了整幅画的构图中心, 给人强烈的视觉冲击力。

(3) 相异性突出。相异性突出主要是利用对比的手法突出绘画的主题, 通过强烈的色彩或者形状的对比引起强烈的视觉刺激, 这种鲜明的对比能够有效的突出画面中心。

(4) 借助光线为中心的突出。在油画绘画中, 可以利用光和火来突出画面中心, 光和火的绘制通常伴随着色彩的明度, 这时便给人形成了视觉焦点, 增强整个画面的画面感。

四、结语

油画作为世界美术的重要分支在现代已经发展到了一定的高度, 其具有强大的表现力和悠久的发展历史, 与此同时它凭借其较为完善的油画形式语言规律是人们表达情感的一种媒介, 本文中笔者谨根据自己的一点见解对油画形式语言规律进行简单的分析和探讨, 积累形式语言规律的相关经验, 运用好并且通过自己的努力不断丰富油画这门艺术语言。

摘要:油画作为美术的一个重要分支, 凭借其油画形式语言具有强大的艺术表现力和文化内涵。本文着眼于油画形式语言的发展史, 分析了从起源到后现代主义的油画发展历程, 随后从点、线、面三个构成要素, 以及光影变化、结构、视点位置、平面构成、色彩等几个方面进行探索、研究, 探索油画形式语言的发展规律, 促进油画的发展。

关键词:油画,发展历史,形式语言规律

参考文献

[1]刘春蓉.消解与重构——油画静物的形式语言初探[J].文艺生活·文海艺苑, 2013 (8) :16-17.

[2]张曦.东西方油画形式语言的融合与碰撞[J].美术教育研究, 2012 (15) :18-19.

C语言指针常用形式的分析 篇3

众所周知, 在C语言中, 我们使用到的数据 (此处的数据不包含程序指令) 通常有两类:一类是数值不可改变的, 我们称为常量, 另一类是数值可以随时更改的, 我们称为变量。常量与变量的这种区别仅仅是表面的现象, 深层次的区别在于:常量是以固定的方式被编写到了最终的计算机指令中, 而变量却是存放在计算机内存中, 每一个不同的变量都会在计算机内存中占据一块独立的存储空间, 在一个通用的32位计算机系统中, 一个char数据类型占用1字节的存储空间, 一个int或者long或者float数据类型占用4字节的存储空间, 一个double数据类型占用8字节的存储空间, 其他还有很多不同的数据类型, 各自占用存储空间。

既然变量在计算机内存中会占用一定的存储空间, 那我们就有必要并且也必须知道这些变量到底被放在了计算机内存的哪个位置。所以, 我们首先需要对计算机内存中的每一个存储单元进行编号, 这些不重复的编号就被称作内存单元地址, 简称地址。通常为了使用上的便捷, 我们在对这些地址进行记录的时候采用十六进制的方式, 如果是8051系列的CPU, 最大内存支持64K, 也就是0x0000—0xFFFF, 而如果是通用的32位x86系列CPU, 最大内存支持4G, 也就是0x00000000—0x FFFFFFFF, 这种记录方式给我们带来的最大好处就是编号整齐, 读起来一目了然。

什么是指针, 指针就是一个内存单元的地址。前面提到了计算机内存的每一个存储单元都有一个唯一的地址, 每一变量在计算机内存中都会占用一定的存储空间 (通常变量都占用不止一个单元的存储空间, 我们用它们的首地址作为整个变量在内存中的地址) , 以一个通用的32位计算机系统为例, 这个地址的长度是一个8位的十六进制数。而在C语言中, 有一类非常特殊的变量, 它们在内存中占用的空间恰好就是4个字节, 而存储的内容就是一个以8位十六进制数表示的内存单元地址, 这就是指针最本质的揭示。不论什么类型的变量, 他们的首地址肯定都是一个8位的十六进制数, 所以, 任何一种数据类型的指针都占用4个字节。

2 常用指针类型的解析

2.1 基本类型指针

此种情况下, 定义整型数据的指针p (即p变量中存放了一个内存单元的地址, 该地址是某个整型变量在内存单元中的位置) 。所以, 可以将整型变量a的地址 (&a) 赋值给整型指针p。

2.2 指针与数组

此种情况下, 定义整型数据的指针p, 同时定义了整型数组a, 对一个一维数组而言, 数组名称即为该数组中第一个元素的地址, 也就是数组的地址。所以可以将整型数组的地址a赋值给整型指针p。

2.3 二级指针

此种情况下, 定义了整型变量a和整型指针p, 和我们分析的第一种情况完全一样。但又定义了int**pp, 即为一个二级指针。怎么理解二级指针呢?前面分析过指针的本质就是一个变量, 该变量在内存中占用4个字节的存储空间, 而该变量区别于其他普通变量的就是其存放的内容 (值) 是另外某个内存存储单元的地址。既然指针也是一个变量, 那么很显然指针变量本身也具有一个内存单元, 即指针本身的地址, 我们通常使用一个二级指针来表示这一概念。同理, 可以派生出更多级次的指针, 但因为其过于复杂, 一般没有实用价值。

2.4 指针数组

此种情况下, 定义了一个指针数组a, 数组中共有4个成员, 每一个成员都是一个整型指针, 而指针p是一个二级指针。

2.5 数组指针

此种情况下, 定义了一个指针p, 指针p指向一个有4个元素, 且每个元素都是整型的数组。而a是被定义为一个有4个整型变量的数组, 所以可以将a赋值给p。对比第二种情况和第五种情况, 在第二种情况下, 是将一个整型数组的地址赋值给了一个整型指针, 而在第五种情况下, 是将一个整型数组的地址赋值给了一个整型数组的指针, 考虑到赋值关系左右两端应该具有的一致性, 第五种应用方式似乎比第二种应用方式更完美。

2.6 结构体指针

在此种情况下, 定义了一个结构体类型struct Stu, 并且定义了一个该结构体变量a和一个该结构体指针p, a和p的最大区别就在于:a表示一个实际存在的结构体内容 (即a变量中有一个整型成员和一个字符数组成员, 共占有24字节的存储空间) , 而指针a仅仅表示了一个内存单元的地址, 共4个字节 (一个基本数据类型的指针和一个极其复杂的结构体类型的指针都分别只有4个字节的存储空间) 。

2.7 指针函数

此种情况下, 定义了一个函数func, 该函数有两个整形变量作为参数, 返回值类型为整形指针。这就是通常称的指针函数, 其本质仍然是在定义一个函数。

2.8 函数指针

此种情况下, 定义了一个指针 (而不是一个函数) func。该指针指向了一个函数 (即该指针变量中存放了一个函数在内存中的存储地址) , 这个被指向的函数具有两个整形变量构成的参数, 返回值是整型。在对该函数指针赋值的时候, 必须采用一个类型完全一致的函数的名称。当使用这个函数指针对函数进行调用的时候, 可以采用下面两种方法:

在通过函数指针调用函数的过程中, 以上两种方法完全是等效的, 但结合C语言的语法分析, 似乎第二种方法更合理:func为一个指针, 通过*将其中的值 (地址) 取出来, 再到该地址空间开始函数的调用。

3 指针类型的强制数据类型转换

在指针的各种应用中, 强制数据类型转换是很常见的。对指针的强制数据类型转换通常都不会有语法的错误 (编译器通常都认为是合理的) , 而这些转换到底是否有意义, 则需要程序员自己进行逻辑分析, 下面就以一个比较常用的示例说明该问题。

此处定义了两个结构体类型, struct Stu和struct Cls, 其中struct Cls类型中包含了一个struct Stu数组。接下来定义指针如下:

这是一个struct Cls类型的指针, 它指向一个struct Cls类型的变量, 当我们对其进行强制数据类型转换如下:

此时指针p就被强制转换成为了一个指向struct Stu类型的指针了。

【多维分析形式语言】推荐阅读:

多维偏好分析06-06

多维分析法10-05

多维度战略分析10-06

多维识别06-08

立体多维06-15

多维透视06-23

多维视野08-11

多维阅读08-12

多维意义08-29

多维研究09-03

上一篇:特色体育教学方法下一篇:意义认识