第6讲 指针的使用

合集下载

bigC语言第12讲

bigC语言第12讲

WANGJINLING
指针是特殊类型的变量,其内容是变 合 量的地址。在使用前必须说明,说明某标 肥 识符是指针类型,并可指向某种类型的变 工 量或数据结构。
业 大 学
1、指针变量的定义 格式: type *pname1,…*pnamen;
标识符命名的指 针变量名
WANGJINLING
合 肥 指针指向对象的类型 工 int *p, *q; /* p、q是指向整型变量的指针业 */ 大 float *pfValue ,*pf; 学 /* pfValue和pf是指向浮点型的指针 */
类型长度
p1++; /*指向a后的整型单元*/ p1- -; /*指向a前的整型单元*/ p1+n; /*指向a后的n个整型单元*/
6.2 指针与数组
数组中的各元素按下标的顺序占据一段连续 的内存空间,数组名是这段连续内存的首地址, 指针访问数组元素非常方便。
WANGJINLING
6.2.1 指针与一维数组 通过指针引用数组元素有三个步骤:
指针标志
2、指针变量的赋值
① int a, *p=&a;
WANGJINLING
初始化
② int a=10,*p,*q; 注:*p=&a p=&a; 赋值语句 q=p; p=NULL
合 /*Error!*/ 肥 工 业 大 学
例:
#include <stdio.h> void main (void ) { int x ,*p; x=55; p=&x; printf ( “ %d, %u ”, x, *p) ; *p=65; printf ( “ %d, %u”, x, *p) ; }
WANGJINLING

指针式万用表的教案

指针式万用表的教案

指针式万用表的教案第一章:指针式万用表简介1.1 教学目标让学生了解指针式万用表的定义和作用让学生熟悉指针式万用表的结构和特点1.2 教学内容指针式万用表的概念指针式万用表的分类指针式万用表的特点和优势1.3 教学方法讲授法:讲解指针式万用表的定义、分类和特点演示法:展示指针式万用表的结构和操作方法1.4 教学步骤引入话题:介绍指针式万用表的概念讲解分类:讲解指针式万用表的分类强调特点:强调指针式万用表的特点和优势展示操作:展示指针式万用表的结构和操作方法第二章:指针式万用表的使用方法2.1 教学目标让学生掌握指针式万用表的使用方法让学生了解指针式万用表的测量范围和精度2.2 教学内容指针式万用表的使用方法指针式万用表的测量范围和精度2.3 教学方法讲授法:讲解指针式万用表的使用方法和测量范围实践操作:让学生亲自操作指针式万用表进行测量2.4 教学步骤讲解使用方法:讲解指针式万用表的使用方法和步骤测量练习:让学生亲自操作指针式万用表进行测量练习讨论问题:讨论指针式万用表的测量范围和精度问题第三章:指针式万用表的维护和保养3.1 教学目标让学生了解指针式万用表的维护和保养方法让学生掌握指针式万用表的故障排除方法3.2 教学内容指针式万用表的维护和保养方法指针式万用表的故障排除方法3.3 教学方法讲授法:讲解指针式万用表的维护和保养方法案例分析:分析指针式万用表的故障案例3.4 教学步骤讲解维护保养:讲解指针式万用表的维护和保养方法分析故障案例:分析指针式万用表的故障案例故障排除练习:让学生亲自进行指针式万用表的故障排除练习第四章:指针式万用表的应用实例4.1 教学目标让学生了解指针式万用表在实际工作中的应用让学生掌握指针式万用表的实际操作技能4.2 教学内容指针式万用表的应用实例指针式万用表的实际操作技能4.3 教学方法讲授法:讲解指针式万用表的应用实例实践操作:让学生亲自操作指针式万用表进行实际测量4.4 教学步骤讲解应用实例:讲解指针式万用表在实际工作中的应用实例实际操作练习:让学生亲自操作指针式万用表进行实际测量练习讨论问题:讨论指针式万用表的实际操作技巧第五章:指针式万用表的测量误差及改进方法5.1 教学目标让学生了解指针式万用表的测量误差来源让学生掌握指针式万用表的改进方法5.2 教学内容指针式万用表的测量误差来源指针式万用表的改进方法讲授法:讲解指针式万用表的测量误差来源案例分析:分析指针式万用表的测量误差案例5.4 教学步骤讲解误差来源:讲解指针式万用表的测量误差来源分析误差案例:分析指针式万用表的测量误差案例改进方法讨论:讨论指针式万用表的改进方法第六章:指针式万用表在电气测量中的应用6.1 教学目标让学生了解指针式万用表在电气测量中的重要作用让学生掌握指针式万用表在电气测量中的操作技巧6.2 教学内容指针式万用表在电气测量中的应用范围指针式万用表在电气测量中的操作步骤6.3 教学方法讲授法:讲解指针式万用表在电气测量中的应用范围实践操作:让学生亲自操作指针式万用表进行电气测量6.4 教学步骤讲解应用范围:讲解指针式万用表在电气测量中的应用范围操作步骤讲解:讲解指针式万用表在电气测量中的操作步骤实践测量:让学生亲自操作指针式万用表进行电气测量第七章:指针式万用表在电子测量中的应用让学生了解指针式万用表在电子测量中的重要作用让学生掌握指针式万用表在电子测量中的操作技巧7.2 教学内容指针式万用表在电子测量中的应用范围指针式万用表在电子测量中的操作步骤7.3 教学方法讲授法:讲解指针式万用表在电子测量中的应用范围实践操作:让学生亲自操作指针式万用表进行电子测量7.4 教学步骤讲解应用范围:讲解指针式万用表在电子测量中的应用范围操作步骤讲解:讲解指针式万用表在电子测量中的操作步骤实践测量:让学生亲自操作指针式万用表进行电子测量第八章:指针式万用表在故障诊断中的应用8.1 教学目标让学生了解指针式万用表在故障诊断中的重要作用让学生掌握指针式万用表在故障诊断中的操作技巧8.2 教学内容指针式万用表在故障诊断中的应用范围指针式万用表在故障诊断中的操作步骤8.3 教学方法讲授法:讲解指针式万用表在故障诊断中的应用范围实践操作:让学生亲自操作指针式万用表进行故障诊断8.4 教学步骤讲解应用范围:讲解指针式万用表在故障诊断中的应用范围操作步骤讲解:讲解指针式万用表在故障诊断中的操作步骤实践诊断:让学生亲自操作指针式万用表进行故障诊断第九章:指针式万用表的安全使用与注意事项9.1 教学目标让学生了解指针式万用表使用中的安全注意事项让学生掌握指针式万用表的正确使用方法9.2 教学内容指针式万用表使用中的安全注意事项指针式万用表的正确使用方法9.3 教学方法讲授法:讲解指针式万用表使用中的安全注意事项演示法:演示指针式万用表的正确使用方法9.4 教学步骤讲解安全注意事项:讲解指针式万用表使用中的安全注意事项演示正确使用方法:演示指针式万用表的正确使用方法学生练习:让学生亲自操作指针式万用表进行练习第十章:指针式万用表的故障与维修10.1 教学目标让学生了解指针式万用表可能出现的故障让学生掌握指针式万用表的基本维修方法10.2 教学内容指针式万用表可能出现的故障分析指针式万用表的基本维修方法10.3 教学方法讲授法:讲解指针式万用表可能出现的故障实践操作:让学生亲自进行指针式万用表的简单维修操作10.4 教学步骤讲解故障分析:讲解指针式万用表可能出现的故障讲解维修方法:讲解指针式万用表的基本维修方法维修操作练习:让学生亲自进行指针式万用表的简单维修操作重点和难点解析1. 指针式万用表的结构和特点:重点关注指针式万用表的各部分结构和功能,以及其相比数字式万用表的优势。

七年级第6讲 时间的测量讲义

七年级第6讲 时间的测量讲义

第六节 时间的测量思考:“一寸光阴一寸金,寸金难买寸光阴”说明什么?说明了时间及时间的宝贵时间与长度不同,是我们无法用感官直接感知的,只能通过它的效果来了解时间和计量时间。

一、测量时间的工具和方法1、 古代记时器:燃香(小说里常用“一炷香的 时间)、沙漏(或漏壶计时)、日晷、节拍器、太阳的升起和落下、四季的变化等 讨论:这些仪器为什么能计量时间?利用了变化的周期性这个性质 2、现代记时工具思考:现代的计时工具,如机械表、电子表等又是利用什么来计时的?分别利用摆和原子的振荡周期性。

结论:任何有周期性的运动都可以作为测量时间的标准。

二、时间的单位及换算:1、时间的主单位是秒,单位符号是s 。

常用的单位还有分、时、天、月、年。

2、时间的基本换算关系是:I天=24小时l 小时=60分钟=3600秒 三、时间通常包含两层含义:时刻和时间间隔。

时刻指的是时间的一个点,如10:00;钟表停表漏壶古代计时器——日晷时间间隔指的是一段时间,如课间休息10分钟。

实验室中常用来计时的工具是停表,有机械停表和电子停表。

思考:机械停表和电子停表是如何正确的表达时间呢?电子停表的准确值可以达到0.01秒。

机械停表在读数时,要分别读出分(小盘:转一圈15分钟)和秒(大盘:转一圈30秒),并将它们相加。

它的准确值为0.1秒。

小结:1=__ _秒。

2两种。

30.4秒,那么4)A5)A9:30分处1、12345、下列说法正确的是()A、测量液体时,把温度计插入液体中立即读数B、体温计测量体温时,离开人体读数就不准了C、实验室用来计时的停表,有电子停表和机械停表两种D、天平测量物体质量时,砝码放左盘,被测物体放右盘6、当天平调节好以后,在称量时发现指针偏在标尺中央的左边,这时应()A、把右端的平衡螺母向右旋出一些B、把左端的平衡螺母向左旋出一些C、向天平右盘中增加砝码或将游码向右移动D、将天平右盘中砝码减少7、用量筒测量液体体积时小明采用仰视读数法,读出液体的体积为35毫升,则此液体的真实体积将比35毫升()A、大B、小C、一样D、都有可能8、甲、乙、丙三种量筒,它的测量范围和最小刻度分别是:甲:500毫升,10毫升;乙:100毫升,1毫升;丙:40毫升,1毫升,现要测量体积约为40厘米3的石块体积,选择上述哪一种量筒进行测量好?()A、甲B、乙C、丙D、三种都可以10、关于托盘天平的调节,有以下几个步骤:①调节天平两端的平衡螺母②天平放在水平面上③移动游码到零刻度线④加减砝码或移动游码使天平平衡⑤左盘放称量物体⑥读数。

C语言中有关指针内容讲课思路的探讨

C语言中有关指针内容讲课思路的探讨
a= 1 0; b=2 0;
的部分 。指针 的概念及指针与其他知识点 的联系与运用 这一
部分知识 的讲 解 ,对 于较 好 的掌握 C语 言 ,对 于合 理使 用 指针编写有效正 确 的 C程 序非 常关 键。如何讲 解这 一部 分 内容 ,即讲解 的思路 、内容 的选择 、具体讲解方法等 ,是本
文 要 探 讨 和分 析 的 。

P P p / = + ; P表示 P 指的 目标 数据 ,此 时 所
为变 量 a

指 针 概 念 的讲 解 方 法
主要包括指针 、指针变量 、如何定义指针变量 、目标 变 量的表示 、指针常量及指针数据 的运算等 。
1 、指 针

* = *q+b /*q表 示 q所 指 的 目标 数 据 ,此 时 为 q ; 变量 b 5 、指针 常 量
pnf(“ =%d It j p ,&p =%x * =%d ,P , p ’ ,&p * ) ’ , P;
pit r f(“ =%d n b ,&b =%x ,b &b ; ” , )
p t (“t =” ;p t s 1 ; us sr l ) us(t ) r
pit r f(“ t n s 2=% S t [ r ,s 2 0] =% C ,s 2 s 2 r ” t , t r r
用和地位 。
2、指 针 变 量
配的那一段 内存区的首地址即指针 ,因此是指针常量
( )&变量名 2
( ) N L在 “ti.” 中定 义 的 一 个 符 号 常 量 ,表 示 3 UL sd h o

用于保存指针 的变量 。如果一个指针变量 已经存放了某

个不指 向任何 目标数据的特殊指针。 6 、指针数据 的运算

指针式万用表的使用(讲课稿)

指针式万用表的使用(讲课稿)

万用表常识万用表是用来测量交直流电压、电阻、直流电流等的仪表。

它是由电流表(俗称表头)、刻度盘、量程选择开关、表笔等组成。

使用时如果把量程选择开关指向直流电流范围时,电流表M并接一些分流电阻来实现扩大量程之目的,使它成为一个具有几个大小不同量程的电流表。

测量结果要看刻度盘上直流电流刻度来读数。

通常刻度盘上第二行为电流刻度。

同样,如果量程选择开关指向直流电压范围时,表头串接另外一些电阻(用串联电阻分压的原理,使它成为一个多程量的电压表)。

读数要看刻度盘上直流电压刻度。

大多数的万用表电压和电流合用一刻度。

(如何实现?)如果在测量直流电压的电路中接入一个整流器,便可测交流电压了。

测电阻的原理与测直流电压相仿,只是测试时还须加一组电池。

选择开关指向电阻范围时,刻度盘上找第一行电阻专用刻度读数即可。

现以MF30型万用表为例,介绍它的使用方法。

使用前的准备第一,使用万用表之前,必须熟悉量程选择开关的作用。

切不可弄错档位。

例如:测量电压时误将选择开关拨在电流或电阻档时,容易把表头烧坏。

?第二,使用前观察一下表针是否指在零位。

如果不指零位,可用螺丝刀调节表头上机械调零螺丝,使表针回零(一般不必每次都调)。

红表笔要插入正极插口,黑表笔要插入负极插口。

电压的测量将量程选择开关的尖头对准标有V的五档范围内。

若是测交流电压则应指向V处。

依此类推,如果要改测电阻,开关应指向Ω档范围。

测电流应指向mA或UA。

测量电压时,要把电表表笔并接在被测电路上。

根据被测电路的大约数值,选择一个合适的量程位置。

干电池每节最大值为1.5V,所以可放在5V量程档。

这时在面板上表针满刻度读数的500应作5来读数。

即缩小100倍。

如果表针指在300刻度处,则读为3V。

注意量程开关尖头所指数值即为表头上表针满刻度读数的对应值,读表时只要据此折算,即可读出实值。

除了电阻档外,量程开关所有档均按此方法读测量结果。

测量直流电压时应注意正、负极性,若表笔接反了,表针会反打。

C语言指针的初始化和赋值

C语言指针的初始化和赋值

C语⾔指针的初始化和赋值1、指针的初始化指针初始化时,“=”的右操作数必须为内存中数据的地址,不能够是变量,也不能够直接⽤整型地址值(可是int*p=0;除外,该语句表⽰指针为空)。

此时,*p仅仅是表⽰定义的是个指针变量,并没有间接取值的意思。

⽐如:int a = 25;int *ptr = &a;int b[10];int *point = b;int *p = &b[0];假设:int *p;*p = 7;则编译器(vs2008)会提⽰The variable 'p' is being used without being initialized.即使⽤了未初始化的变量p。

由于p是指向7所在的地址,*p = 7给p所指向的内存赋值,p没有赋值,所以p所指向的内存位置是随机的,没有初始化的。

int k;int *p;p = &k; //给p赋值*p = 7; //给p所指向的内存赋值,即k= 72、指针的赋值int *p;int a;int b[1];p = &a;p = b;指针的赋值,“=”的左操作数能够是*p,也能够是p。

当“=”的左操作数是*p时,改变的是p所指向的地址存放的数据;当“=”的左操作数是p时,改变的是p所指向的地址。

数组的变量名b表⽰该数组的⾸地址,因此p=b;也是正确的同类型的指针赋值:int val1 = 18,val2 = 19;int *p1,*p2;p1 = &val1;p2 = &val2;p1 = p2; //注意啦,p1指向了val2,⽽没有指向val1备注:字符串与指针的初始化和赋值初始化:char *cp = "abcdefg"; //这个初始化过程,是将指针cp指向字符串的⾸地址,⽽并⾮传递字符串的值。

由于,在C语⾔⾥⾯,没有总体处理⼀个字符串的机制赋值:cp = "abcdefg";*cp=”abcdefg” ;//错误!字符串常量传递的是它的⾸地址,不能够通过*cp改动该字符串的值,由于该字符串为常量,⽽它仅仅是简单的将指针指向该字符串常量3、指针常量在C语⾔中没有⼀种内建(built-in)的⽅法去表⽰指针常量,所以当我们使⽤它的时候通常先写成整型常量的形式,然后再通过强制类型转换把它转换成对应的类型,如:int * , double * , char *等。

指针万用表使用方法,详细的讲解

指针万用表使用方法,详细的讲解指针万用表是一种常用的电子测量仪器,用于测量电流、电压和电阻等参数。

它具有简单、灵活、精确的特点,适用于各种电子设备的维修和调试工作。

下面将详细介绍指针万用表的使用方法。

1. 基本部件介绍指针万用表通常由一个显示屏、旋钮和多个测试插头组成。

显示屏用于显示测量结果,旋钮用于选择测量范围,测试插头用于连接待测电路。

2. 测量电流首先,将旋钮调整到电流测量档位,并确保测试插头插入正确的接口。

然后,将待测电路的电流接入测量插头之间,注意保持电路的连通性。

最后,读取显示屏上的电流数值,注意单位是否与预期一致。

3. 测量电压将旋钮调整到电压测量档位,并插入正确的测试插头。

然后,将待测电路的电压接入测试插头之间,确保电路的连通性。

最后,读取显示屏上的电压数值,并注意单位是否与预期一致。

4. 测量电阻首先,将旋钮调整到电阻测量档位,并插入正确的测试插头。

然后,将待测电阻的两端接入测试插头之间,确保电路断开。

最后,读取显示屏上的电阻数值,并注意单位是否与预期一致。

5. 其他功能指针万用表通常还具有其他功能,如测量频率、温度和电容等。

对于这些功能,使用方法类似,只需将旋钮调整到相应的测量档位,并按照前述步骤进行操作。

值得注意的是,在使用指针万用表进行测量时,应注意以下几点:- 确保测量前待测电路处于断开状态,以避免对仪器和电路造成损坏。

- 在选择测量档位时,始终选择最接近待测参数范围的档位,这样可以获得更准确的测量结果。

- 测量结束后,及时将旋钮调整至最小档位,以避免对仪器零位的损坏。

综上所述,指针万用表是一种非常实用的电子测量仪器,通过灵活的测量档位和多功能测试插头,可以满足各种电子设备调试和维修的需求。

熟练掌握其使用方法,可以提高工作效率和测量精度。

C语言指针详解

C语言指针详解1 程序如何运行当我们打开电脑中的任何一个程序运行时,我们的操作系统会将该程序存在硬盘的所有数据装载到内存中,然后有CPU 进行读取内存中的数据并进行计算,并将计算的结果返回给我们的操作系统,然后操作系统将相应的动作交付给相应的硬件来完成。

如:将声音数据交给声卡,最后有音响输出来,将图像交给显卡最后有显示器输出……但是还会有一部分数据会返回给内存,以供程序下面的语句继续使用。

我们都知道内存的容量有很大,如:4G,8G, 16G,有时候我们会打开很多的程序,所有的程序的数据都存放到我们的内存中,那么CPU是如何正确的读取我们的不同程序的数据并加以计算的哪?2 内存的假设设计为了让我们的CPU 可以很好的读取内存中的数据,内存必须做优化设计,于是给内存设定了集合设计,将我们的内存分成很多大小相同的方格(盒子),所有的数据将放入这些小盒子中,将不同的程序的数据放入到不同的小盒子中,这样就出现的模块化的内存,当我执行程序的一个命令时,CPU就会从相应的盒子读数据然后计算,由于我们硬件所能访问或计算的最小单位是字节,所以内存中的这样的一个小盒子的大小就给他规定一个字节。

3 地址和指针一般我们声明一块内存空间的时候,会给他取一个名字,为的是我们在编写程序的时候方便使用空间中存放的值,但是CPU 读数据的时候会忽视这个名字,因为CPU无法理解这样的数据,CPU 只能执行0,1代码,那么CPU是如何知道从什么地方读取数据,又到什么地方地址数据的读取的那,所以必须对内存做2次设计,就是将内存中分成的很多小盒子下面标注一些顺序的序号,例如:从第一个盒子开始,标注1,2,3,4,5,6,7,……每一个数字对应一个盒子,但是真正的内存如中不是使用这些十进制数字的,而是使用16进制整数表示的,如0x16ffee。

这些我们标记的数字就叫做内存中的地址。

由于这些地址和盒子是对应的关系,所以只要知道了地址,就可以得到对应盒子中存放的数据了,形象的说,我们说这个地址指向对应的盒子,在C语言中可以通过地址得到对应盒子的数据是*地址。

(江苏物理总复习)第6讲 实验:用多用电表测量电学中的物理量


三、实验器材 多用电表、电学黑箱、直流电源、开关、导线若干、小灯泡、二极管、定
值电阻(大、中、小)三个。 四、实验步骤 1.观察多用电表:观察多用电表的外形,认识选择开关的测量项目及量程。 2.机械调零:检查多用电表的指针是否停在表盘刻度左端的零位置。若不指
零,则可用小螺丝刀进行机械调零。 3.将红、调节滑动变阻器,使欧姆表指针指向________ kΩ 处;将红、 黑表笔与电阻箱连接,记录多组电阻箱接入电路的电阻值及欧姆表上对应的测 量值,完成校准数据测量。若校准某刻度时,电阻箱旋钮位置如图(c)所示, 则电阻箱接入的阻值为________Ω。
解析:(1)实物连线如图所示。
①估读时易带来误差。 ②表头指针偏转过大或过小都会使误差增大。 (2)系统误差 ①电池用旧后,电动势会减小,内阻会变大,致使电阻测量值偏大,要及 时更换电池。 ②测电流、电压时,由于电表内阻的影响,测得的电流、电压值均小于真 实值。
考查点(一) 多用电表的原理
一、基础考法保住分
1.(2021 年 1 月新高考 8 省联考·江苏卷)电流表改装成欧姆表的电路如图所示, 两表笔直接相连时,指针指在表盘刻度“5”上。两表笔之间接有 600 Ω 的电 阻时,指针指在刻度“1”上。求刻度“3”应标注的电阻值 R。
(3)当电流计满偏时,欧姆表显示外电阻为零,故该欧姆表的内阻为 r=IEg= 1.5×104 Ω=15 kΩ;电流 I=30 μA 时,由闭合电路欧姆定律可得电阻值为 R =EI -r=30×1.150-6 Ω-15 kΩ=35 kΩ。 (4)根据题图 4 所示电路图,由闭合电路欧姆定律可得 R=UI -Ry,由题图 5 可 得:0=25U-Ry,400=75U-Ry,解得 Ry=200 Ω,U=8 V。 答案:(1)dafb (2)2 200 (3)15 35 (4)200 8

湖南人教新课标高中总复习第1轮物理第7章第6讲实验练习使用多用电表2

(5)测量:将红黑表笔接被测电阻两端进行测量.测量时被测电阻要跟电源、 其他元件断开.
(6)读数:指针指示数乘以倍率得测量值.读数=示数×倍数,保留 两位有效数字.
(7)用毕将选择开关旋至交流最高挡或“OFF”挡,以断开内部电 源.
8 表盘刻度的确定:设电流为满偏电流的n分之
一,RZ=(
R+Rg+r
一、认识两种多用电表 1.如图761甲是一种多用电表外形图,表的上半部分是 表盘 ,下半 部分是 选择开关 ,周围标有测量功能的区域及量程.
图761甲
将选择开关旋转到电流挡,多用电表内的 电流表电路 就被接通,选 择开关旋转到电压挡或欧姆挡,表内的电压表电路或欧姆表电路就被接
通.其中指针定位螺丝用于多用电表的机械调零,欧姆调零旋钮用于多用电 表欧姆挡的电阻调零,即为欧姆表原理图中的R,当用导线直接连接A、B时, 应使表盘满偏,而Rx=0.
图768
电流 刻度
0
50μ 100μ 200μ 250μ 300μ 400μ 500μ AA A A A A A
电阻 刻度
(2)这只欧姆表的总内阻为________Ω,表针偏转到满刻度的1/3时,待测电阻 为________Ω.
(3)若欧姆表内电池用久了,电动势降为E=1.4V,则欧姆表内阻变为 ________Ω.若此情况下测某电阻Rx时,电表指针恰好指在中间位置上,则Rx的实际 阻值为________Ω.和原表盘上读数所得阻值相比要偏________(填“大”或 “小”).
答案:(1)直流电压 1.17V;(2)直流电流 47mA (3)电阻 1.7kΩ (4)改 用×1kΩ倍率,重新调零,将红黑表笔分别接触被测电阻的两根引线,读出指 针所指刻度,再乘以倍率得测量值 (5)OFF 交流电压500V挡位置 (6)红 正
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在C语言中,既可以用字符数组表示字符串,也可用字符指针变量来表示; 引用时,既可以逐个字符引用,也可以整体引用。 (1)逐个引用 【例4】 使用字符指针变量表示和引用字符串。 main() { char *string=”I love Beijing.”; for(; *string!=’\0’; string++) printf(“%c”, *string); printf(“\n”); } 程序运行结果: I love Beijing. 程序说明:char *string="I love Beijing."; 语句定义并初始化字符指针变量string:用串常量“I love Beijing.”的地址 (由系统自动开辟、存储串常量的内存块的首地址)给string赋初值。
数组名作函数参数
小结:
引入指向数组的指针变量后,数组及指向数组的指针
变量作函数参数时,可有4种等价形式(本质上是一 种,即指针数据作函数参数): (1)形参、实参都用数组名 (2)形参、实参都用指针变量 (3)形参用指针变量、实参用数组名 (4)形参用数组名、实参用指针变量
指针与字符数组
1. 字符串的表示与引用
指针与字符数组
(2)整体引用 【例5】采取整体引用的办法,改写[例4]。 /*程序功能:使用字符指针变量表示和引用字符串*/ main() { char *string=”I love Beijing.”; printf(“%s\n”,string); } 程序说明:printf(“%s\n”,string);语句 通过指向字符串的指针变量string,整体引用它所指向的字符串 的原理:系统首先输出string指向的第一个字符,然后使string自 动加1,使之指向下一个字符;重复上述过程,直至遇到字符 串结束标志。 注意:其它类型的数组,是不能用数组名来一次性输出它的全部元 素的,只能逐个元素输出。
数组名作函数参数
数组名可以用作函数的形参和实参。如: main ( ) { int array[10] ; f ( array , 10 ) } f ( arr , n ) int arr[ ], n ; { } array 为实参数组名,arr 为形参数组名。
数组名作函数参数
【例3】将数组a 中n 个整数按相反顺序存放 解此题的算法为:将a [0]与a[n-1 ]对换,再将a[1]与a[n-2]对 换,… … ,直到将a[(n-1)/2] 与a [n-int((n-1)/2)] 对换。今用循环处理此 问题,设两个“位置指示变量”i 和j , i 的初值为0 , j 的初值为n-1。将 a[i]与a[j] 交换,然后使i 的值加1 , j 的值减1 ,再将a[i]与a[j]对换,直 到i =(n-1)/2 为止。 Void inv(int x[],int n) /*形参x是数组名*/ { int temp,i,j,m=(n-1)/2; for(i=0;i<=m;i++) {j=n-1-i; temp=x[i];x[iI]=x[j];x[j]=temp;} return; } main() { int i,a[10]={3,7,9,11,0,6,7,5,4,2}; for(i=0;i<10;i++)
通过指针引用数组元素
2 通过指针引用二维数组中的元素
在C语言中,二维数组是按行优先的规律转换为一维 线性存放在内存中的,因此,可以通过指针访问二维 数组中的元素。 如果有:int a[M][N]; 则将二维数组中的元素a[i][j]转换为一维线性地址的 一般公式是: 线性地址=a+i×M+j 其中:a为数组的首地址, M和N分别为二维数组行 和列的元素个数。
通过指针引用数组元素
printf("%d\n", day_of_year(day_tab,y,m,d) ); /* 实参为二维数组名 */ } day_of_year(day_tab,year,month,day) int *day_tab; /* 形式参数为指针 */ int year, month, day; { int i, j; i = (year%4==0&&year%100!=0) || year%400==0; for ( j=1; j<month; j++ ) day += *( day_tab+i*13+j ); /* day_tab+i*13+j:对二维数组中元素进行地址变换 */ return(day); } 由于C语言对于二维数组中的元素在内存中是按行存放的, 所以在函数day_of_year 中要使用公式"day_tab+i*13+j"计算main函 数的day_tab中元素对应的地址。
指针与字符数组
2. 字符串指针作函数参数 【例6】 用函数调用方式,实现字符串的复制。 /*********************************************************/ /*string_copy()函数:复制一个字符串*/ /*形参:字符指针str_from接收源串,字符指针 str_to存储目标串 */ /*返回值:无*/ /********************************************************* */ void string_copy(char *str_from, char *str_to) { int i=0; for(; (*(str_to+i)=*(str_from+i))!=’\0’; i++) ; /*循环体为空语句 */ } main() { char array_str1[20]=”I am a teacher.”; char array_str2[20];
pointer=array;
注意:数组名不代表整个数组,上述“pointer=array;”的作用是“把array数组的第一 个元素的地址赋给指针变量pointer”而不是“把array数组各元素的值赋给pointer”。
通过指针引用数组元素
1 通过指针引用一维数组中的元素
如果有“int array[10],*pointer=array;” ,则: (1)pointer+i和array+i都是数组元素array[i]的地址。 (2)*(pointer+i)和*(array+i)就是数组元素array[i]。 (3)指向数组的指针变量,也可将其看作是数组名, 因而可按下标法来使用。例如,pointer[i]等价于 *(pointer+i)。 注意:pointer+1指向数组的下一个元素,而不是简单 地使指针变量pointer的值+1。其实际变化为 pointer+1*size(size为一个元素占用的字节数)。 例如,假设指针变量pointer的当前值为3000,则 pointer+1为3000+1*2=3002,而不是3001。
指针与数组
1 指向数组元素的指针 2 通过指针引用数组元素 3 数组名作函数参数
4 指针与字符数组
5 数组指针
指向数组元素的指针
指向数组的元素指针变量的定义,与指向普通变量的指针变量的定义方法一样 例如,int array[10]; ( 定义array为包含10个整型变量的数组)
int *pointer
通过指针引用数组元素
【例2】:给定某年某月某日,将其转换成这一年的第几天并输出。 此题的算法很简单,若给定的月是i,则将1、2、3、……、i-1月的 各月天数累加,再加上指定的日。但对于闰年,二月的天数29天, 因此还要判定给定的年是否为闰年。为实现这一算法,需设置一 张每月天数列表,给出每个月的天数,考虑闰年非闰年的情况, 此表可设置成一个2行13列的二维数组,其中第1行对应的每列 (设1~12列有效)元素是平年各月的天数,第2行对应的是闰年 每月的天数。程序中使用指针作为函数day_of_year的形式参数。 /*程序功能:使用指向数组的指针变量来引用数组元素*/ #include <stdio.h> main( ) { static int day_tab[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31} }; int y, m, d; scanf("%d%d%d", &y, &m, &d);
通过指针引用数组元素
【例1】 使用指向数组的指针变量来引用数组元素。 /*程序功能:使用指向数组的指针变量来引用数组元素*/ main() { int array[10], *pointer=array, i; printf(“Input 10 numbers: ”); for(i=0; i<10; i++) scanf(“%d”, pointer+i);/*使用指针变量来输入数组元素的值*/ printf(“array[10]: ”); for(i=0; i<10; i++) printf(“%d ”, *(pointer+i));/*使用指向数组的指针变量输出数组*/ printf(“\n”); }
指针与字符数组ห้องสมุดไป่ตู้
string_copy(array_str1, array_str2) ; printf(“array_str2=%s\n”, array_str2); } 程序运行结果: I am a teacher. /*数组名作实参*/
程序说明: for(; (*(str_to+i)=*(str_from+i))!=’\0’; i++) ; 语句的执行过程为: 首先将源串中的当前字符,复制到目标串中;然后判断该字符 (即赋值表达式的值)是否是结束标志。如果不是,则相对位 置变量i的值增1,以便复制下一个字符;如果是结束标志,则 结束循环。其特点是:先复制、后判断,循环结束前,结束标 志已经复制。
相关文档
最新文档