- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验4构造数据类型概要
实验4 构造数据类型
一、实验目的
掌握指针的定义和使用。
掌握指针在函数参数传递中的作用。
掌握引用的作用、定义及使用。
掌握结构体类型变量、结构体类型指针及结构体数组的定义和使用。
熟悉联合体的概念与应用,了解联合型、枚举型的定义与使用。
使用构造类型数据解决实际应用问题,优化程序设计。
二、知识要点
(一)指针
指针和指针变量
所谓指针就是变量、数组、函数等的存储地址。
指针变量就是用于存放指针的变量。
直接按变量地址存取变量值的方式为直接访问方式。
将变量地址存放在另一个变量(即指针变量)中,再通过指针变量来存取变量值的方式为间接访问方式。
指针变量可以存储各类标识符的地址,包括变量、数组、函数、对象,甚至是指针。
同类型的对象取地址的方式却不尽相同:
一般变量的地址,用取地址符“”加变量名;
数组的地址用数组名表示;
函数的地址用函数名表示。
指针变量的定义
C++规定指针变量必须先定义后引用,定义一个指针变量的一般形式为:
类型名 *指针变量名;
两个重要的运算符
(1)“”为取地址运算符
其作用是取出变量的内存地址。若变量i的起始地址为2000,则i的运算结果为2000。
注意:指针变量中只能存放地址(指针),不能存放其他非地址类型的数据。
(2)“*”为指针运算符
其作用是返回指针变量所指向的变量的值。
指针变量的运算
(1)算术运算
指针变量的算术运算主要有指针变量的自加、自减、加n和减n操作。这些算术运算的规则是:
指针变量=指针变量+/-sizeof(指针变量类型)*n
其中,n表示元素的个数,
*******************************************************************************
说明:本部分在chapter 9
*******************************************************************************
指针变量作为函数参数
在C++中,有3种类型的指针可以作为函数的参数,它们是:
(1)一般对象(变量)的指针作为函数的参数;
(2)数组的指针(字符串的指针)作为函数的参数;
(3)函数的指针作为函数的参数。
第一种情况是地址参数。第二种情况是指针作为参数非常多的一种情况,它体现出指针作为参数的优势就是简单、灵活、高效。第三种情况较复杂,主要是为了设计出一个更通用的函数。
指向数组元素的指针
(1)指向一维数组元素的指针
定义一个指向数组元素的指针变量与定义一个指向变量的指针变量相同,但要注意指针变量类型必须与其指向的数组类型相同。一般格式为:
数组类型名 *指针变量名;
(2)指向二维数组元素的指针
定义指向二维数组元素的指针与定义指向一维数组元素的指针相同。一般格式为:
数组类型名 *指针变量名;
需要说明的是,在二维数组中有行地址的概念。C++规定,二维数组a中第i行的地址用a+i或a[i]表示,并且行地址的值与行首地址的值是相同的,即:
a+i=a[i]=a[i]=a[i][0]
但要注意它们的类型不同,前两个是行地址,后两个是数组元素地址。行地址a+i与a[i] 只能用于指向一维数组的指针变量,而不能用于普通指针变量,例如:
int a[2][3];
int *p=a+0; //错误!类型不同,应该为int *p=a[0][0];
(3)指向一维数组的指针
二维数组名可以认为是指向一维数组的常指针,与该指针对应的指针变量定义一般格式为:
数组类型名 (*指针变量名)[第2维数组长度]
第i行第j列元素a[i][j]的地址有下面4种表示方法:
a[i]+j、* (a+i)+j 、a[i][0]+j、a[i][j]
或
p[i]+j、* (p+i)+j 、p[i][0]+j、p[i][j]
通过指针引用数组元素
(1)通过指向数组元素的指针引用一维数组元素
通过指针引用一维数组元素,一般有以下两种方法:
下标法:数组名/指针变量名[下标]
指针法:*(数组名/指针变量名+下标)
在C++中,下标法实际上是指针法的一种缩写形式,在编译器编译程序时,首先需要将下标法转化成指针法,也就是说,从编译角度看,指针法引用数组元素要更快一些。
假设指针变量P指向一维数组a,则根据数组元素存储的连续性以及指针的运算规则,可以得出以下结论:
① p+1表示指向数组中的下一个元素;
② 若p=a[0],i是一个整数,那么
p+i或a+i就是a[i]的地址(i不能超过数组的最大长度);
*(p+i)或*(a+i)代表数据元素a[i];
a[i]也可以写成p[i],两者是等价的;
(2)通过指向一维数组的指针引用二维数组元素
指向一维数组的指针基本等同于二维数组名,它们的
文档评论(0)