第十章 指针
C语言程序设计_谭浩强_第二版_CH10

}
第十章 指针 10.3 数组的指针和指向数组的指针变量 10.3.2 通过指针引用数组元素 例10.5输出数组中的全部元素。 ②通过数组名计算数组中元素的地址,找出元素的值。
main() {
int a[10],i; for(i=0;i<10;i++){scanf(“%d”,&a[i]);} print(“\n”); for(i=0;i<10;i++){printf(“%d”,*(a+i));} print(“\n”);
}
运行结果为: 100,10 100,10
第十章 指针 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.1 通过指针变量访问整型变量
pointer_1 &a
a 100 *pointer_1
pointer_2 &b
b 10 *pointer_2
第十章 指针 10.2 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.3 通过指针变量访问整型变量
pointer_1 &a
a 5 *pointer_1
pointer_2 &b
b 9 *pointer_2
第十章 指针 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.3 通过指针变量访问整型变量
b 5 *pointer_2
&b
第十章 指针 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.3 通过指针变量访问整型变量
pointer_1 &a
a 9 *pointer_1
第十章 C++ 基础

华厦职业学院
C语言程序设计
其中public是成员的属性说明,表示公有成员, 类的成员还可以声明为private(私有成员)或 protected(保护成员),不同属性的成员在访问时 规则不同。 类定义好之后,可以像结构那样定义变量,方 法是: 类的名称 变量名称;
华厦职业学院
C语言程序设计
在C++中类定义的变量称为对象(object),在定 义对象时,也可以用类名来定义类变量的指针,注 意在使用时类名称之前不写class。例如: time t; // t是类time的一个对象; time *pt; // pt是一个指向类对象的指针
华厦职业学院
C语言程序设计
关于成员函数,有以下规则: (1) 成员函数是类的函数,不能独立执行,必须要 用一个对象或对象指针来调用执行,什么对象调用 成员函数,成员函数就作用于什么对象,既成员函 数的执行结果依赖于具体的对象; (2) 成员函数中可以存取同一个类中的成员变量, 这些成员变量就是相应对象的成员变量;成员函数 也可以调用同一个类中的其它成员函计
10.3
构造函数与析构函数
10.3.1 构造函数 用类来定义对象变量时,往往需要让对象有一个初始值, 完成这种功能的函数就是构造函数。构造函数是与类同名的 函数,但函数没有任何返回类型,也不是void类型,例如: class time { public: int h,m,s; time() { h=0; m=0; s=0; } void set(int th,int tm,int ts) { h=th; m=tm; s=ts; } void show(); };
华厦职业学院
C语言程序设计
10.1 类与对象 10.2 this指针 10.3 构造函数与析构函数 10.4 引用与复制构造函数 10.5 动态内存分配 10.6 类成员的访问规则 10.7 对象的赋值 10.8 运算符重载
第十章 指针

19
10.4 字符串与指针
字符串的表示形式
1. 可以用字符数组表示字符串
main() { char string[]=”I love China!”; printf(“%s\n”, string); }
2. 可用字符指针变量来表示
main() { char *string=”I love China!”; printf(“%s\n”, string); }
9
10.2.2 指针变量的引用
& :取地址运算符 * :指针运算符
i_pointer-----指针变量,它的内容是地址量 Eg10.1 *i_pointer----指针的目标变量,它的内容是数据 &i_pointer---指针变量占用内存的地址 main() &*i_pointer等价于i_pointer { (&*i_pointer)++与&*i_pointer++的区别 int a,b; int *pointer_1,*pointer_2; a=100;b=10; pointer_1=&a; pointer_2=&b; printf("%d,%d\n",a,b); printf("%d,%d\n",*pointer_1,*pointer_2); }
21
10.5 指向函数的指针
赋值 函数名代表该函数的入口地址。因此,可用 函数名给指向函数的指针变量赋值。 指向函数的指针变量=[&]函数名;
注意:函数名后不能带括号和参数;函数名前的 “&”符号是可选的。
调用格式 (*函数指针变量)([实参表])
22
用指向函数的指针作函数参数
c语言 ●第10章 指针-1

…
19
2.定义时同时赋值
int a[10];
int *p=a; c规定: /* 相当于int *p=&a[0] */
若有 int a[10];
int *p=a; 则 p+1:指向下一个数组元素。
…
p+i:其指向下移i个元素。
20
说明:若有 int a[10]; int *p=a; (1) p+i *(p+i) = &a[i] a[i]= a+i *(a+i) (2)数组的指针变量也可带下标 a[i] ,p[i], *(a+i),*(p+i) 是等价的。 (3)a与p的区别:a代表数组a的首地址,是常量。 p=a; p也代表数组a的首地址,是变量。 如:p++; 是正确的,而 a++; 是错误的。 (4)引用数组元素有三种方法: 下标法: a[i]或p[i] 地址法:*(a+i) 效率低 指针法:*(p+i) *p++ 效率高
13
讨论: 若将被调函数swap( )改为: swap(int *p1,int *p2) {int *p; *p=*p1; *p1=*p2; *p2=*p; /*中间变量是指针变量所指的对象*/ } p无确定的地址(地址是随机的),可能指向任何单 元,有可能破坏系统(乱放枪)。加上int c;p=&c;就没 有问题了。
3 6 9 …
i j k
2004
3010
2000
i_pointer
3
二.对内存单位的访问 存数—写 取数—读 对内存单位的访问,是通过地址进行的。 如: printf(“%d”,i); 读 再如:scanf(“%d”,&i); 写 直接访问:按变量的地址直接读写变量的值。 如:k=i+j; (1)从2000开始的内存单元中取出i的值3. (2)从2002开始的内存单元中取出j的值6. (3)相加后,送入2004开始的内存单元。 间接访问:将变量a的地址存入另一变量b中,访问a时,先 找b,取出a的地址,再按此地址访问a。
《C语言程序设计》课程教学大纲

《C语言程序设计》课程教学大纲一、课程教学目的本课程系统研究C语言的基本知识和基本语法,较好地训练学生解决问题的逻辑思维能力以及编程思路和技巧,使学生具有较强的利用C语言编写软件的能力,为培养学生有较强软件开发能力打下良好基础。
二、课程教学要求通过本课程的研究,应熟练掌握C语言中的基本知识、各种语句及程序控制结构,熟练掌握C语言的函数、数组、指针、结构体、链表等数据结构的基本算法;并能熟练地运用C语言进行结构化程序设计;具有较强的程序修改调试能力;具备较强的逻辑思维能力和独立思考能力。
三、课时分配本学科计划学时为246学时,其中理论与实训课时比例为7:3.四、课程教学重、难点课程教学重点:掌握C语言变量类型及不同类型常量的表示;标准的输入输出函数的使用;运算符及常用数学函数的使用;控制流程、数组和指针的使用;结构体、链表的构造使用;函数结构、函数参数传递及递归等方面的知识;基本的文件操作。
难点:指针的使用、结构体链表的构造和使用及函数的参数传递。
五、课程教学方法(或手段)本课程实践性较强,故采用讲授和上机操作相结合的方式进行教学。
六、课程教学内容第一章C言语概述1.教学内容(1)编程历史的回顾、程序设计介绍(过程式,面向对象,函数式,逻辑式);(2) C语言的历史背景、特点;(3) C言语源步伐的格式和步伐结构;(4) C程序的上机步骤。
2.重、难点提醒(1)重点:掌握简单的C程序格式,包括main()函数、数据说明、函数开始和结束标志等;(2)难点:编程入门和对言语的理解。
第二章算法1.教学内容(1)算法的概念及特征;评价算法优劣的方法(时间和空间);(2)简单算法举例;(3)算法的表示(自然语言、流程图、N-S流程图);(4)结构化步伐设计的基本思想及基本步调。
2.重、难点提醒(1)重点:算法流程图三种基本结构(以后各章研究中使用流程图强化对步伐的理解);(2)难点:算法概念和对结构化步伐设计思想的理解。
Fortran指针

二、插入和删除
插入:
删除:
不过编写interface很麻烦,将函数封装在module中,就等于 编写好interface
10.4
指针的应用
在两条数据进行交换,尤其是这两条数据量很大的时 候,这时用指针可以提高执行效率,而且需要的空间 小 一· 指针还可以创建各种串行结构,以及树状结构 串行结构:
1:单向串行
双向串行:
环状串行:
第十章 指针
实质:给一个变量起一个别名
10.1 指针的基本概念 指针变量的定义格式
类型说明, POINTER::指针变量名1, 指针变量名2, …
类型说明,它表示该指针所指的目标变量类型。
指针的使用: 格式:指针变量=>目标变量或者另一指针变量。
注意:指针变量与目标变量的类型应当一致
10.2 指针数组
指针也可以声明成数组来进行使用
这里有两个使用方法: 1:让指针指到其他数组 2:配置一个内存空间来使用
第一种情况: Example: Integer , pointer :: a(:) Integer , target :: b(5)=(∕1,2,3,4,5∕) a=>b ! a(1~5)=>b(1~5)
第二种情况: 动态分配存储单元函数:ALLOCATE
方法:先定义指针,再利用ALLOCATE(P)函数为其动 态分配空间,其中P为指针变量。
优点:通过动态定义,可以根据当时使用 空间大小来生成空间,使数组大小满足 要求。
注意: 释放存储单元函数:DEALLOCATE
10.3 指针与函数
指针变量可以作为参数在函数之间传递,也可 以作为函数的返回值 使用时需要注意以下几点策略: 1:要把指针传递给函数时,要声明这个函数的参数 使用接口interface. 2 指针参数声明时不需要intent这个形容词。 3函数返回值若为指针时,需要定义函数的interface.
第十章 实验十 导体电阻率的测量

实验十 导体电阻率的测量目标要求 1.熟悉“金属丝电阻率的测量”的基本原理及注意事项.2.掌握测电阻率的电路图及误差分析.实验技能储备1.实验原理(如图所示)由R =ρl S 得ρ=RS l =πd 2R4l ,因此,只要测出金属丝的长度l 、直径d 和金属丝的电阻R ,即可求出金属丝的电阻率ρ.2.实验器材被测金属丝,直流电源(4 V),电流表(0~0.6 A),电压表(0~3 V),滑动变阻器(0~50 Ω),开关,导线若干,螺旋测微器,毫米刻度尺. 3.实验过程(1)用螺旋测微器在被测金属丝上的三个不同位置各测一次直径,求出其平均值d . (2)连接好用伏安法测电阻的实验电路.(3)用毫米刻度尺测量接入电路中的被测金属丝的有效长度,反复测量多次,求出其平均值l . (4)把滑动变阻器的滑片调到最左(填“左”或“右”)端.(5)闭合开关,改变滑动变阻器滑片的位置,读出几组相应的电流表、电压表的示数I 和U 的值,填入记录表格内.(6)将测得的R 、l 、d 值,代入公式ρ=πd 2R4l 中,计算出金属丝的电阻率.4.求R 的平均值时可用两种方法(1)用R =UI 分别算出各次的数值,再取平均值.(2)用U -I 图线的斜率求出. 5.注意事项(1)本实验中被测金属丝的电阻值较小,因此实验电路一般采用电流表外接法.(2)测量被测金属丝的有效长度,是指测量被测金属丝接入电路的两个端点之间的长度,亦即电压表两端点间的被测金属丝长度,测量时应将金属丝拉直,反复测量多次,求其平均值.(3)测金属丝直径一定要选三个不同部位进行测量,求其平均值.(4)在用伏安法测电阻时,通过被测金属丝的电流不宜过大(电流表用0~0.6 A量程),通电时间不宜过长,以免金属丝的温度明显升高,造成其电阻率在实验过程中逐渐增大.(5)若采用图像法求电阻阻值的平均值,在描点时,要尽量使各点间的距离拉大一些,连线要尽可能地通过较多的点,不在直线上的点均匀分布在直线的两侧,个别明显偏离较远的点应舍去.6.误差分析(1)金属丝直径、长度的测量、读数等人为因素带来误差.(2)测量电路中电流表及电压表对电阻测量的影响,因为电流表外接,所以R测<R真,由R=ρlS,知ρ测<ρ真.(3)通电电流过大、时间过长,致使金属丝发热,电阻率随之变化带来误差.考点一教材原型实验例1在“金属丝电阻率的测量”实验中,所用测量仪器均已校准,待测金属丝接入电路部分的长度约为50 cm.(1)用螺旋测微器测量金属丝的直径,其中某一次测量结果如图甲所示,其读数应为__________ mm.(该值接近多次测量的平均值)(2)用伏安法测金属丝的电阻R x,实验所用器材为:电池组(电动势为3 V,内阻约为1 Ω)、电流表(内阻约为0.1 Ω)、电压表(内阻约为3 kΩ)、滑动变阻器R(0~20 Ω,额定电流为2 A)、开关、导线若干.某小组同学利用以上器材正确连接好电路,进行实验测量,记录数据如下:次数1234567U/V0.100.300.70 1.00 1.50 1.70 2.30I/A0.0200.0600.1600.2200.3400.4600.520由以上实验数据可知,他们测量R x是采用图中的________(选填“乙”或“丙”)图.(3)图丁是测量R x的实物图,图丁中已连接了部分导线.请根据(2)中所选的电路图,补充完整图中实物间的连线.(4)这个小组的同学在坐标纸上建立U-I坐标系,如图戊所示,图中已标出了与测量数据对应的4个坐标点.请在图中标出第2、4、6次测量数据的坐标点,并描绘出U-I图线.由图线得到金属丝的阻值R x=________ Ω.(保留两位有效数字)(5)根据以上数据可以算出金属丝电阻率约为________(填选项前的字母).A.1×10-2Ω·m B.1×10-3Ω·mC.1×10-6Ω·m D.1×10-8Ω·m(6)任何实验测量都存在误差,本实验所用测量仪器均已校准.下列关于误差的说法中正确的是________(填选项前的字母).A.用螺旋测微器测量金属丝直径时,由于读数引起的误差属于系统误差B.由于电流表和电压表内阻引起的误差属于偶然误差C.若将电流表和电压表的内阻计算在内,可以消除由测量仪表引起的系统误差D.用U-I图像处理数据求金属丝电阻可以减小偶然误差答案(1)0.396(0.395、0.397、0.398均可)(2)乙(3)如图(a)所示(4)如图(b)所示 4.5(4.3、4.4、4.6、4.7均可)(5)C(6)CD例2某同学测量一段长度已知的电阻丝的电阻率.实验操作如下:(1)螺旋测微器如图所示.在测量电阻丝直径时,先将电阻丝轻轻地夹在测砧与测微螺杆之间,先旋转________,当测微螺杆刚好接触电阻丝时,再旋动________(均选填“A”“B”或“C”),直到听见“喀喀”的声音,以保证压力适当,同时防止螺旋测微器的损坏.(2)选择电阻丝的________(选填“同一”或“不同”)位置进行多次测量,取其平均值作为电阻丝的直径.(3)如图甲中R x为待测电阻丝.请用笔画线代替导线,将滑动变阻器接入如图乙所示实物电路中的正确位置.(4)为测量R x,利用图甲所示的电路,调节滑动变阻器测得5组电压U1和电流I1的值,作出的U1-I1关系图像如图丙所示.接着,将电压表改接在a、b两端,测得5组电压U2和电流I2的值,数据见下表:U2/V0.50 1.02 1.54 2.05 2.55I2/mA20.040.060.080.0100.0请根据表中的数据,在图丙中作出U 2-I 2图像.(5)由此,可求得电阻丝的R x =________ Ω.根据电阻定律可得到电阻丝的电阻率. 答案 (1)B C (2)不同 (3)见解析图 (4)见解析图 (5)23.5(23.0~24.0都算对)解析 (1)A 起固定作用,便于读数;B 为粗调,调节B 使电阻丝与测微螺杆、测砧刚好接触;然后调节C ,C 起微调作用.(2)电阻丝的粗细不一定均匀,为保证测量结果准确,应在不同位置测直径,然后取平均值作为测量值.(3)滑动变阻器采用分压式接入电路,注意线不能交叉,如图所示.(4)将所给的5组数据标注在U -I 图像中,用过原点的直线把它们连在一起,让尽可能多的点在直线上,如图所示.(5)由题意知U 1I 1=R x +R A +R 0,由U 1-I 1图线的斜率可得R x +R A +R 0=49.0 Ω.U 2I 2=R A +R 0,由作出的U 2-I 2图线的斜率可得R A +R 0=25.5 Ω,故R x =23.5 Ω.考点二 探索创新实验例3 (2022·浙江1月选考·18)小明同学根据图(a)的电路连接器材来“探究导体电阻与其影响因素的定量关系”.实验时多次改变合金丝甲接入电路的长度l 、调节滑动变阻器的阻值,使电流表的读数I 达到某一相同值时记录电压表的示数U ,从而得到多个U I 的值,作出U I -l图像,如图(b)中图线a 所示.(1)在实验中使用的是____________(选填“0~20 Ω”或“0~200 Ω”)的滑动变阻器. (2)在某次测量时,电压表的指针位置如图(c)所示,量程为3 V ,则读数U =________ V. (3)已知合金丝甲的横截面积为7.0×10-8 m 2,则合金丝甲的电阻率为________ Ω·m (结果保留2位有效数字).(4)图(b)中图线b 是另一根长度相同、材料相同的合金丝乙与合金丝甲并联后采用同样的方法获得的UI -l 图像,由图可知合金丝甲的横截面积________(选填“大于”、“等于”或“小于”)合金丝乙的横截面积.答案 (1)0~20 Ω (2)1.32(1.31~1.34均可) (3)9.9×10-7(9.6×10-7~1.0×10-6均可)(4)小于解析 (1)由实验原理可知R x =U I ,而由UI -l 图像可知待测电阻最大约为8 Ω,为了使电压表有明显的读数变化,则滑动变阻器的阻值不能太大,故选0~20 Ω比较合适;(2)电压表的量程为3 V ,其分度值为0.1 V ,估读到0.01 V ,则读数为1.32 V(1.31~1.34 V); (3)根据欧姆定律与电阻定律有U I =R x =ρS ·l则U I -l 图像的斜率为k =ρS 可得合金丝甲的电阻率为ρ=kS =7.4-4.00.44-0.20×7.0×10-8 Ω·m≈9.9×10-7 Ω·m (9.6×10-7~1.0×10-6 Ω·m );(4)另一根长度相同、材料相同的合金丝乙与合金丝甲并联后,电阻率不变,而横截面积变为 S ′=S +S 乙 由图(b)中图线b 可得S ′=ρk b =9.9×10-72.2-1.40.42-0.20m 2=27.2×10-8m 2解得S 乙=S ′-S =20.7×10-8 m 2>S故合金丝甲的横截面积小于合金丝乙的横截面积.例4 某物理实验兴趣小组测定自制盐水的电阻率,在一无盖的长方体玻璃槽中装入一定量的盐水,玻璃槽内腔的长度为40.10 cm ,宽度为4.52 cm.(1)某次实验过程中,在槽中倒入适量的盐水,用多用电表的电阻挡粗测玻璃槽中盐水的电阻,选择开关置于“×100”挡,发现指针如图甲所示,为较准确地测得玻璃槽中盐水的电阻,该同学接着需要做的实验步骤是换选________________(选填“×10”或“×1 k ”)挡.(2)为了准确测量电阻,准备了以下实验器材: A .电动势为3 V 的电源,内阻约为0.5 Ω; B .最大阻值为5 Ω的滑动变阻器;C .最大测量值为3 V 的电压表,内阻约为3 kΩ;D .最大测量值为15 V 的电压表,内阻约为5 kΩ;E .最大测量值为15 mA 的电流表,内阻约为1 Ω;F .最大测量值为0.6 A 的电流表,内阻约为0.5 Ω.实验中要求尽量减小系统误差,应保证电表在测量时其最大读数超过量程的12,则电压表应选择________,电流表应选择________(均填器材前的选项字母).请用笔画线代替导线,完成图乙中的连线.(3)准确连线后,测出玻璃槽中盐水的高度为H ,电压表示数为U ,电流表示数为I ,改变玻璃槽中的盐水高度,测出如下表所示的5组数据,分析数据后,试通过U I -1H 图线来求电阻率.图丙中已经描出了各点,请作出图线,求得盐水的电阻率为ρ=________ Ω·m.(结果保留2位有效数字)次数 水面高H (cm)电压U (V) 电流I (mA)1 2.53 2.88 8.72 3.00 2.65 9.53 3.51 2.63 9.84 4.00 2.35 10.9 54.502.5213.1答案 (1)×10 (2)C E 如图所示(3)如图所示0.93(0.90~0.96均可)课时精练1.(2023·浙江温州市月考)小亮同学设计了如图甲所示的电路来测量某种电阻丝的电阻率.(1)闭合开关S 1、S 2,调节电阻箱,当电压表读数为2.00 V 时,电流表示数如图乙所示,I =________ A ,电阻丝电阻的测量值为________ Ω(保留三位有效数字),此测量值________真实值(选填“大于”“等于”或“小于”).(2)断开S 2,通过改变接线夹接触电阻丝的位置来调节接入电路中电阻丝的长度,并通过改变电阻箱的阻值,使电流表示数保持不变.记录接入电路中电阻丝的长度L 和对应电阻箱的阻值R ,作出“R -L ”图线,如图丙所示.电阻丝的电阻率记为ρ、直径记为d ,图线斜率的绝对值为k ,则电阻率的表达式ρ=________.(3)小亮同学测出金属丝的直径d =0.35 mm ,由此可求得金属丝的电阻率为________ Ω·m (计算结果保留两位有效数字). 答案 (1)0.31 6.45 大于 (2)k πd 24(3)9.6×10-7解析 (1)由题图甲可知,电流表的量程为0~0.6 A ,故读数为0.31 A ; 电阻丝的测量值R 0=U I =2.000.31Ω≈6.45 Ω由题图甲所示电路图可知电流表采用内接法,由于电流表的分压作用,所以电压的测量值大于真实值,则电阻丝电阻的测量值大于真实值; (2)由电阻定律可知:R x =ρL S =ρLπ(d 2)2闭合S 1断开S 2,由闭合电路欧姆定律得E =I (r +R A +R +R x ) 整理得:R =-4ρL πd 2-r -R A +EIR -L 图线斜率的绝对值k =4ρπd 2, 解得电阻率ρ=14k πd 2.(3)由题图丙知,R -L 图像的斜率的绝对值k =|ΔR ΔL |=5.00.50 Ω/m =10 Ω/m电阻率ρ=14k πd 2,代入数据解得ρ≈9.6×10-7 Ω·m.2.(2023·湖南省雅礼中学模拟)一根细长均匀、内芯为绝缘材料的金属管线样品,横截面外缘为正方形,如图甲所示.此金属管线样品长约30 cm 、电阻约10 Ω,已知这种金属的电阻率为ρ,因管芯绝缘材料截面形状不规则,无法直接测量其横截面积.请你设计一个测量管芯截面积S 的电学实验方案,现有如下器材可选: A .毫米刻度尺 B .螺旋测微器C .电流表A 1(量程0~600 mA ,内阻约为1.0 Ω)D .电流表A 2(量程0~3 A ,内阻约为0.1 Ω)E .电压表V(量程0~3 V ,内阻约为6 kΩ)F .滑动变阻器R 1(2 kΩ,允许通过的最大电流0.5 A)G .滑动变阻器R 2(10 Ω,允许通过的最大电流2 A)H .蓄电池E (电动势为6 V ,内阻约为0.05 Ω)I .开关一个、带夹子的导线若干(1)上述器材中,应该选用的电流表是________,滑动变阻器是________(填写选项前字母代号).(2)若某次用螺旋测微器测得样品截面外缘正方形边长如图乙所示,则其值为________ mm. (3)要求尽可能测出多组数据,你认为在图丙、丁、戊、己中选择的电路图是________.(4)若样品截面外缘正方形边长为a 、样品长为L 、电流表示数为I 、电压表示数为U ,则计算内芯截面积的表达式为S =________. 答案 (1)C G (2)0.730 (3)丙 (4)a 2-ρILU解析 (1)由题意可知,电源电动势为6 V ,电压表量程0~3 V ,而由于待测电阻约为10 Ω,则电流最大为I =UR =0.3 A ,故不能选用量程为0~3 A 的电流表,故电流表选A 1,即C ;滑动变阻器总阻值太大不方便调节,故滑动变阻器应选用最大阻值较小的R 2,即G.(2)由题图乙所示螺旋测微器可知,固定刻度读数为0.5 mm ,可动刻度读数为23.0×0.01 mm =0.230 mm ,螺旋测微器的读数为0.5 mm +0.230 mm =0.730 mm.(3)由于电压表内阻远大于金属管线的电阻,电流表应采用外接法;为测多组实验数据,滑动变阻器应采用分压式接法,故选择电路图丙.(4)根据欧姆定律有R =U I ,根据电阻定律有R =ρL S 0,故截面积为S 0=ρILU ,故金属管线内芯截面积的表达式为S =a 2-ρILU.3.(2023·江苏南通市模拟)小明通过实验测量一种合金的电阻率.(1)如图甲所示,用螺旋测微器测量合金丝的直径时,从调节到读数的过程中,螺旋测微器上三个部件A、B、C使用的先后顺序应该为________(填字母);测得该合金丝的直径为d=________ mm;(2)请根据表格中数据,在图乙中用笔画线代替导线把电路连接补充完整;(3)小明在实验室找了两节干电池进行实验,正确连接电路后,发现调节滑动变阻器,电压表和电流表的示数变化范围非常小,原因是______________________________;(4)正确连接电路后,小明利用刻度尺测出合金丝接入电路的长度L=59.99 cm,闭合开关,调节滑动变阻器,读出多组电压表和电流表的示数,在方格纸上作出U-I图像如图丙,发现图像是一条倾斜直线,计算该合金丝电阻R=________ Ω,该合金丝电阻率ρ=________ Ω·m(π取3,结果均保留2位有效数字).1234567电流I/A00.080.110.150.190.270.38电压U/V00.190.290.440.600.80 1.15答案(1)CBAC或BAC0.400(2)见解析图(3)电源内阻太大(4)3.0 6.0×10-7解析(1)用螺旋测微器测合金丝直径时,先打开固定螺钉C,把待测合金丝放在测微螺杆与测砧之间,然后调节粗调旋钮B,当合金丝与测微螺杆、测砧接触时停止调节粗调旋钮,然后调节微调旋钮A;为防止读数时测微螺杆发生转动,读数前应先旋紧固定螺钉C,然后再读数,使用的先后顺序为CBAC;或者没有第一步,即先打开固定螺钉C,而是直接进行第二步,即把待测合金丝放在测微螺杆与测砧之间,然后调节粗调旋钮B,其他两步一样,故使用的先后顺序为BAC;由题图乙所示螺旋测微器可知,其分度值为0.01 mm,测得该合金丝的直径为d=0 mm+40.0×0.01 mm=0.400 mm;(2)由表中数据,可知电压、电流都要从零开始变化,故滑动变阻器采用分压式接法,且合金丝电阻较小,故电流表采用外接法,则完整的实物图如图所示;(3) 根据闭合电路欧姆定律有I =ER 外+r,调节滑动变阻器,改变R外,电压表和电流表的示数变化范围非常小,说明外电阻的影响较小,所以产生的原因是电源内阻太大;(4)根据U -I 图像的斜率表示电阻,则有R =ΔU ΔI =3.0 Ω,根据电阻定律有R =ρL S ,又S =14πd 2,联立解得ρ=R πd 24L,代入数据解得ρ=6.0×10-7 Ω·m.4.(2023·湖南长沙市长郡中学高三模拟)为测量甲、乙金属丝的电阻率,小明同学设计了如图(a)、(b)所示的两种实验方案,已知电源的电动势E 和内阻r 在实验过程中保持不变.(1)小明先进行了如图(a)方案的测量;①他首先利用游标卡尺和螺旋测微器分别测出甲、乙两根不同金属丝的直径,示数分别如图(c)、图(d)所示.则两根金属丝直径的测量值分别为:d 甲=________ mm 、d 乙=________ mm ;②实验过程中,小明先将甲金属丝接入电路,并用米尺测出甲金属丝接入电路中的长度l =50.00 cm.闭合开关后移动滑动变阻器的滑片分别处于不同的位置,并依次记录了两电表的测量数据如下表所示,其中5组数据的对应点他已经标在如图(e)所示的坐标纸上,请你标出余下一组数据的对应点,并在图(e)中画出U -I 图线;实验次数 1 2 3 4 5 6 U /V 0.90 1.20 1.50 1.80 2.10 2.40 I /A0.180.240.300.370.430.49③该方案测得的甲金属丝的电阻率ρ=____ Ω·m (π取3.14,计算结果保留两位有效数字); (2)小明又用如图(b)方案测量乙金属丝的电阻率,实验中他可以通过改变接线夹(即图(b)中滑动变阻器符号上的箭头接触金属丝的位置),以控制接入电路中金属丝的长度; ①实验操作步骤:a .正确连接电路,设定电阻箱的阻值,闭合开关b .读出电流表的示数,记录接线夹的位置c .断开开关,测出接入电路的金属丝的长度d .闭合开关,重复b 、c 的操作②根据测得电流与金属丝接入长度关系的数据,绘出如图(f)所示的关系图线,由图可以算出图线的斜率为k ,已测得乙金属丝的直径为d 乙,已知电源的电动势为E 、内阻为r .则乙金属丝的电阻率为________;(写出电阻率的计算式)(3)电表的内阻可能使实验产生系统误差,图(b)方案电阻率测量值________(选填“大于”“小于”或“等于”)真实值.答案 (1)①1.75 0.548 ②见解析图 ③2.3×10-5(2)②πEd 乙2k4(3)等于解析 (1)①两根金属丝直径的测量值分别为 d 甲=1 mm +0.05 mm ×15=1.75 mm d 乙=0.5 mm +0.01 mm ×4.8=0.548 mm ②描点并作出U -I 图像如图③由图像可知 R x =U I =2.90.6 Ω≈4.8 Ω根据R x =ρl S =4ρlπd 甲2解得ρ=πd 甲2R x 4l =3.14×(1.75×10-3)2×4.84×0.5 Ω·m ≈2.3×10-5 Ω·m(2)②由闭合电路欧姆定律 E =I (ρL S +r +R )=I (ρ4Lπd 乙2+r +R )即1I =4ρπd 乙2E L +R +r E 则4ρπd 乙2E=k ,得ρ=πEd 乙2k 4 (3)题图(b)中考虑电流表内阻,则1I =4ρπd 乙2E L +r +R +R A E ,不影响图像的斜率,则电阻率的测量值等于真实值.。
c语言第10章指针

3.间接引用指针
间接引用指针时,可获得由该指针变量所指向的变量内容。
例如,int i=10,*ip=&i;
ip
i
cout<<*ip<<endl;
0000:F384 0000:F384 210
运行结果为:10 即指针ip所指向的变量i的内容。
*放在定义过的指针变量之前,称为间接引用操作符; *放在指针变量定义中时,称为指针定义符。 非指针变量不能用间接引用操作符,*只能作用于地址。
例如, double d=1.23,*dp; char c,*cp;
在&和cp*=作&d用; 下,对变量d和dp有如下6种操作: 其d,中d,dpp,=*&d*是cd; ,非*法dp的,;&&d指,dp针&是只d指p能。针指的向地与址其即同二类级型指的针量。 另外,指针除了可指向所有基本类型的变量外,指针也可 指向常量、数组、数组元素、函数、指针以及文件等。
int ii=n1t0;b, a[10]; int *inpt=&*pi;1,//*初p2始; 化为整型变量的地址,但 *ip=p&1=i;&//是b;错误的
注意:p2不=p要1将; “//可in以t *将ip=一&个i;”已与赋“值*i的p=指&i针;”混赋淆给。另一个相同类型的指针 前者是p2定=&义a语[5句];,*是指针定义符,系统为指针变量ip分配一个空间, 并2、用i数的地组址的值地初址始值化;可后用者该是数执组行语的句数,组左名右表两边示类。型例不如匹:配。 指 例3、针如变,ip函n=d*d量t数bodob;up在u的b=b[3使ll6ee].地8[用*d;4d=址]前/p2,/!(;.,*5值;p一)由[定4该]要; 函被数$赋$$以的d$:p一$名$个$字$地来址表值$$$,示$:否$。$$则$例是如很#6某#:危.#8变险量的。 没有被do赋ub值le的s指in针(d变ou量bdlep的x值);是一个随机地址,把6.8赋给内存中的 随机位do置ub,le很(可*p能f)破( 坏); 了另一个变量,甚至修改了栈中的函数返回 地址,pf造=s成in计; 算机死机或进入死循环。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十章指针
By 联合空间网络工作室
10.1指针的动态变量
1.定义指针类型
在Turbo Pascal中,指针变量中存放的某个存储单元的地址,即指针变量指向某个存储单元。
一个指针变量仅能指向某一种类型的存储单元,这种数据类型是在指针类型的定义中确定的,称为指针类型的基类型。
指针类型定义如下:
类型名=^基类型名;
例如:type q=^integer;
var a,b,c:q;
说明q是一指向整型存储单元的指针类型,其中^为指针符。
a,b,c均定义为指针变量,分别可以指向一个整型存储单元。
上例也可定义为:
var a,b,c:^integer;
指针也可以指向有结构的存储单元。
例如:type person=record
name:string[10];
sex:(male,female);
age:20..70
end;
var pt:^person;
pt为指向记录类型person的指针变量。
2.动态变量
应用一个指针指向的动态存储单元即动态变量的形式如下:
指针变量名^
例如:p^、q^、r^
指针变量p和它所指向的动态变量^p之间有如下关系:
P->P'
以下语句把整数5存放到p所指向的动态变量p^ 中去:
p^:=5;
以下语句把p所指向的p^中的值赋给整型变量i:
i:=p^;
如果指针变量p并未指向任何存储单元,则可用下列赋值语句:
p:=nil;
其中nil是Turbo Pascal保留字,表示“空”,相当于C里面的null
10.2对动态变量的操作
在Turob Pascal程序中,动态变量不能由var直接定义而是通过调用标准过程new建立的。
过程形式为:
new(指针变量名);
如果有下列变量定义语句:
var p:^integer;
仅仅说明了p是一个指向整型变量单元的指针变量,但这个整型单元并不存在,在指针变量p中还没有具体的地址值。
在程序中必须通过过程调用语句:new(p);才在内存中分配了一个整型变量单元,并把这个单元的地址放在变量p中,一个指针变量只能存放一个地址。
在同一时间内一个指针只能指向一个变量单元。
当程序再次执行new(p)时,又在内存中新建立了一个整型变量单元,并把新单元的地址存放在p中,从而丢失了旧的变量单元的地址。
为了节省内存空间,对于一些已经不使用的现有动态变量,应该使用标准过程dispose 予以释放。
过程形式为:dispose(指针变量名);为new(指针变量名)的逆过程,其作用是释放由指针变量所指向的动态变量的存储单元。
例如在用了new(p)后在调用dispose(p),则指针p所指向的动态变量被撤销,内存空间还给系统,这时p的值为nil。
例:输入两个数,要求先打印大数后打印小数的方式输出,用动态变量做。
program dongtai;
type intepter=^integer;
var p1,p2:intepter;
procedure swap(var,q1,q2:intepter);
var p:integer;
begin
p:=q1;q1:=q2;q2:=p;
end;
begin
new(p1);new(p2);
writeln('input 2 data: ');readln(p1^,p2^);
if p1^writeln('output 2 data: ',p1^:4,p2^:$);
end.。