版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
二级指针
张竞丹深圳信息职业技术学院二级指针任意空间在内存中都有地址,二级指针就是为了获取用于存放指针的内存空间的地址。指向指针的指针称为二级指针,用于存放二级指针的变量称为二级指针变量。例如:inta,*pa,**p_pa;a=20;pa=&a;p_pa=&pa;20&a&paapap_pa谢谢您的聆听!Thankyou!指针引用字符串
张竞丹深圳信息职业技术学院指针引用字符串访问一个字符串的两种方法:用字符数组存放一个字符串
charstr[]=''Test'';用字符指针指向一个字符串
char*str=''Test'';
等价于:char*str;str=''Test'';指针引用字符串注意:可以用指针指向字符串常量,但是不能通过指针变量对该字符串常量重新赋值,因为字符串常量是不能被改变的。通过字符数组名或字符指针变量可以输出一个字符串,而对一个数值型数组,是不能用数组名输出它的全部元素的。对字符串中字符的存取,可以用下标法,也可以用指针法。谢谢您的聆听!Thankyou!指针与数组
张竞丹深圳信息职业技术学院23指向数组元素的指针用指针访问二维数组目录1通过指针引用数组元素4用数组名作函数参数目录23指向数组元素的指针1指向数组元素的指针用指针访问二维数组1通过指针引用数组元素4用数组名作函数参数指向数组元素的指针数组是内存地址连续存放的数据集合,数组名就是这块连续内存单元的首地址,也就是数组中第一个元素的地址。对于数组元素的引用除了下标法,还可以使用指针进行访问,也就是说可以通过指向数组元素的指针找到所要访问的元素,这种方法通常被称为指针法。指向数组元素的指针例如:声明一个整型数组和一个整型指针inta[10];int*p;将数组a的首地址赋值给指针变量p,对指针变量p的赋值有两种方法:方法1:p=a;方法2:p=&a[0];目录23指向数组元素的指针2通过指针引用数组元素用指针访问二维数组1通过指针引用数组元素4用数组名作函数参数通过指针引用数组元素可以通过指针来访问数组元素。例如:*p=0;*(p+3)=3;注意:p+i的值即是a[i]的地址;*(p+i)是p+i所指向的数组元素,即a[i];当完成上述的声明和初始化赋值后,p和a便具有了等价互换的功能,因此也可以对指针变量使用下标法引用数组元素。例如引用p+i所指向的元素,可表述为p[i]。需要特别强调的是使用指针法访问数组可使目标程序质量更高。通过指针引用数组元素例6-9输入一个整型数组,使最大值元素与第一个元素交换,最小值元素与最后一个元素交换,最后输出交换后的数组。编程分析:(1)数据结构类型题目要求形式语言(C)的表达输入数据整型数组1个整型(int)数组:a[10]数据3个整型(int)指针变量:max←amin←ap←a临时数据1个整型(int)变量:temp用于交换时候存放待交换变量的值通过指针引用数组元素例6-9输入一个整型数组,使最大值元素与第一个元素交换,最小值元素与最后一个元素交换,最后输出交换后的数组。编程分析:(2)算法算法流程形式语言的表达从键盘读入数组a中各个元素的值for循环处理:
以函数scanf从键盘读入数据,并存放在数组a的对应元素中遍历数组寻找最大值元素和最小值元素for循环:
以指针变量p遍历数组max指向最大值元素min指向最小值元素交换最大值元素与第一个元素的值*max←a[0];a[0]←temp;temp←*max;换最小值元素与最后一个元素的值temp←*min;*min←a[9];a[9]←temp;输出数组a的值,验证交换后的结果循环以函数printf输出数组a中各个元素的值目录23指向数组元素的指针3用指针访问二维数组用指针访问二维数组1通过指针引用数组元素4用数组名作函数参数用指针访问二维数组二维数组中的元素是按行存放的,可以把二维数组看作是特殊的一维数组,它的元素又是一个一维数组。目录23指向数组元素的指针4用数组名作函数参数用指针访问二维数组1通过指针引用数组元素4用数组名作函数参数用数组名作函数参数数组名可以用作函数的实参和形参。由于数组名也是数组的首地址,所以数组名作函数的实参本质上是传递地址给函数的形参,在函数内修改形参所指向的对象实际上是修改了相应的实参数组元素的值。例6-10输入一个整型数组,使最大值元素与第一个元素交换,最小值元素与最后一个元素交换,最后输出交换后的数组(以函数实现)。编程分析:在例6-9分析的基础上编写函数chang遍历数组,以指针变量max指向数组a中最大值的元素、指针变量min指向最小值的元素。将数组中最大的元素与第一个元素交换,最小的与最后一个元素交换。谢谢您的聆听!Thankyou!指针变量
张竞丹深圳信息职业技术学院23指针变量的定义指针变量的引用目录1指针变量的初始化指针变量的运算指针变量作函数参数45目录23指针变量的定义1指针变量的定义指针变量的引用1指针变量的初始化4指针变量的运算5指针变量作函数参数指针变量的定义一个变量如果专门用来存放另一变量的地址(即指针),则它称为指针变量。指针变量既可以存放其它变量的地址,也可以通过指针变量间接读写它所指向变量的值。定义指针变量的一般格式:类型说明符*指针变量名;其中类型说明符表示该指针变量所指向的变量的数据类型,它包括C语言所支持的数据类型;“*”号表示该变量是指针类型;指针变量名遵循用户标识符命名规则。例如:int*a;/*表示指向整型变量的指针变量*/
float*b;/*表示指向实型变量的指针变量*/目录23指针变量的定义2指针变量的初始化指针变量的引用1指针变量的初始化4指针变量的运算5指针变量作函数参数指针变量的初始化同普通的变量一样,指针变量在使用前除了要进行声明定义还要进行初始化。所不同的是它必须用地址进行初始化。内存单元的地址不可以随意使用,为此C语言中可以通过地址运算符“&”提取变量的地址实现对指针变量的初始化赋值。例如:inta,*p=&a;也可以通过下列语句对指针变量赋空值,即不指向任何地方。int*p=NULL;指针变量的初始化例6-1定义指针变量pa和pb分别指向整型变量a和b,输出pa、pb与a、b的地址。编程分析:(1)数据结构类型题目要求形式语言(C)的表达定义数据整型变量a和b2个整型(int)变量:a,b定义数据指针变量pa和pb分别指向整型变量a和b2个整型(int)指针变量:pa,pbpa←&apb←&b指针变量的初始化例6-1定义指针变量pa和pb分别指向整型变量a和b,输出pa、pb与a、b的地址。编程分析:(2)算法算法流程形式语言的表达输出pa,pb,&a,&b以printf函数输出pa,pb,&a,&b结果,指针变量输出格式控制字符采用%p目录23指针变量的定义3指针变量的引用指针变量的引用1指针变量的初始化4指针变量的运算5指针变量作函数参数指针变量的引用由于指针变量的值是变量的地址,因此既可以通过引用指针直接访问数据的地址,也可以通过引用指针间接访问变量的内容。(1)指针变量名指针变量存放指针所指向的变量的地址,例如:inta;int*p=&a;将变量a的地址赋值给指针变量p,使指针变量p存放变量a的地址。指针变量的引用由于指针变量的值是变量的地址,因此既可以通过引用指针直接访问数据的地址,也可以通过引用指针间接访问变量的内容。(2)*指针变量名“*指针变量名”代表指针变量所指向的变量的值,例如:*p=3;将p所指向的内存单元赋值为3,也就是将变量a赋值为3。。注意:不能对空指针做取值。3*p指针变量p&a变量a指针变量的引用存取变量的值有两种方式:直接访问:按照变量名存取变量例如:
inta;a=3;间接访问:通过指向变量的指针存取变量,方式如下:
*指针变量名指针变量的引用例6-3定义两个单精度实数,并将它们的值进行交换(要求以指针实现)编程分析:(1)数据结构类型题目要求形式语言(C)的表达定义数据两个单精度实型变量a和b2个实型(float)变量:a,b定义数据指针变量pa和pb分别指向实型变量a和b2个实型(float)指针变量:pa,pbpa←&apb←&b临时数据1个实型(float)变量:temp用于交换时候存放待交换变量的值指针变量的引用例6-3定义两个单精度实数,并将它们的值进行交换(要求以指针实现)编程分析:(2)算法算法流程形式语言的表达通过指针交换变量a和b的数值交换过程如图6-8输出a和b的值,验证交换结果以printf函数输出a和b交换后的值指针变量的引用例6-3定义两个单精度实数,并将它们的值进行交换(要求以指针实现)编程分析:(2)算法3temp533temp553temp35temp53b*pba*paa*paa*paa*pab*pbb*pbb*pb目录23指针变量的定义4指针变量的运算指针变量的引用1指针变量的初始化4指针变量的运算5指针变量作函数参数指针变量的运算与指针变量有关的运算符有:&:取地址运算符*:指针运算符(或称“间接访问”运算符)注意:“*”号在定义指针变量时,表示所定义的变量为指针类型;在引用时,“*”号表示指针变量所指向的变量。由于指针变量存放的是数据在内存中的地址,因此指针变量可以参与的数学运算很少,仅限于地址的前后迁移运算,即指针变量与整数的加减、自增、自减运算。其中加法和自增运算代表指针向前移,减法和自减运算代表指针向后移。目录23指针变量的定义5指针变量的作函数参数指针变量的引用1指针变量的初始化4指针变量的运算5指针变量作函数参数指针变量作函数参数在C语言中,指针变量可以作为函数的参数使用,将一个变量的地址传递到另一个函数中。例6-5定义两个单精度实数,并将它们的值进行交换(要求在例6-3的基础上,以函数实现交换)编程分析:(1)数据结构类型题目要求形式语言(C)的表达定义数据(main)两个单精度实型变量a和b2个实型(float)变量:a,b定义数据(main)指针变量pa和pb分别指向实型变量a和b2个实型(float)指针变量:pa,pbpa←&apb←&b临时数据(swap)1个实型(float)变量:temp用于交换时候存放待交换变量的值指针变量作函数参数例6-5定义两个单精度实数,并将它们的值进行交换(要求在例6-3的基础上,以函数实现交换)编程分析:(2)算法算法流程形式语言的表达从键盘读入a、b的值(main)以scanf函数从键盘读入2个实数,并分别存放在a和b中交换a与b的数值(swap)编写函数swap完成a与b的数值交换,其中函数的形参为指针类型voidswap(float*px,float*py)在main函数中调用swap函数swap(pa,pb)输出a和b的值,验证交换结果(main)以printf函数输出a和b交换后的值指针变量作函数参数例6-5定义两个单精度实数,并将它们的值进行交换(要求在例6-3的基础上,以函数实现交换)编程分析:(2)算法交换前变量a和b的值调用函数swap将实参值传递给形参交换后变量a和b的值45ba&apa&bpb45b*pya*px&apa&bpb&apx&bpy54b*pya*px&apa&bpb&apx&bpy指针变量作函数参数例6-7趣味程序(移动的笑脸——连续移动):在方框内通过上、下、左、右键连续移动笑脸,按ESC键可以退出程序。算法分析:在例5-2中,已经实现了在方框范围内单步移动笑脸的项目编写。本例以例5-2为基础,编写连续移动函数(smilemv),在连续移动函数中嵌套调用单步移动函数(onestepsmilemv)实现连续移动。(1)修改单步移动函数onestepsmilemv在嵌套调用过程中,笑脸在每次单步移动后都需要将光标位置传递回调用函数(即连续移动函数smilemv),所以单步移动函数(onestepsmilemv)需要以COORD类型的指针变量pos为形参。指针变量作函数参数例6-7趣味程序(移动的笑脸——连续移动):在方框内通过上、下、左、右键连续移动笑脸,按ESC键可以退出程序。算法分析:(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46192.2-2025液晶配向膜测试方法第2部分:成膜性能
- 第四单元 岩石和矿产-2024-2025学年四年级科学上学期期末备考真题分类汇编(河北专版)
- 5.1.2第1课时生态系统的组成课件-2025-2026学年人教版生物八年级上册
- 行政部给公司员工培训
- 水墨画介绍科普
- 2025版冻疮常见症状及护理注意事项
- 2025版痴呆症常见症状及护理技巧培训
- 2025年急救面试专业试题及答案
- 临床护理并发症试题及及答案2025版
- 防盗门的安装施工方案
- 人音版六年级上册全册音乐教案(新教材)
- 青少年科普活动工作计划
- 2024年新人教版四年级数学上册《教材练习7练习七(附答案)》教学课件
- DL∕T 5366-2014 发电厂汽水管道应力计算技术规程
- JT-T-1221-2018跨座式单轨轨道桥梁维护与更新技术规范
- 药用植物与生药学考试题与答案
- 骨质疏松症的诊疗新进展
- 1996年劳动合同模板下载 全新版
- 江苏省建筑与装饰工程计价定额(2014)电子表格版
- 世界自然遗产地的保护与管理
- 预防校园欺凌行为
评论
0/150
提交评论