文档库 最新最全的文档下载
当前位置:文档库 › C知识点总结结构体指针使用

C知识点总结结构体指针使用

C知识点总结结构体指针使用
C知识点总结结构体指针使用

位操作:熟悉& | ^ << >>操作。应聘嵌入式C开发的岗位会考这方面的知识。见实验5。

结构体共用体

如前面讲的,作为函数参数和返回值,结构体是值传递。结构体变量之间可以直接赋值,结构体在初始化时才能整体赋值。

C99里新的结构体初始化方法。初始化结构体的指定成员变量。见《C primer plus》P382 struct book{char a; int b; double c }; struct book surprise ={ .b=3 };即初始化指定的成员变量b,其他成员变量的值赋值为0。在内核驱动代码中会经常见到。

指向结构体的指针及使用

struct node { int data; struct node *next; } node1;

struct node *point=&node1;

内存模型

高地址Array [ point ] ----- > node1

此时,point指向node1。即*point和node1对应的是同一块内存。

(*point).data等价于node1.data对应的是同一块内存。

(*point).next等价于node1.next对应的是同一块内存。即黄色背景的内存。

point->next

为什么这段代码行得通:

int offset= &( ( (struct book*) 0 )->b); //获得成员变量b在结构体的偏移量。

等价于:struct book *ptr=NULL; int offset= & ( ptr->b) ; // &(*ptr).b ;

编译器维护关于每个结构类型的信息,指示每个字段的字节偏移。它以这些偏移作为存储器引用指令中的移位,从而产生对结构元素的引用的代码。结构体的各个字段的选取完全是在编译时处理的。参考《深入理解》P166页中的一个例子。

程序对内存的访问,都是先生成该内存的地址,再访问该内存。

结构体对齐,及填充

结构体的对齐与填充

C语言标准未严格规定该如何对齐,不同系统的对齐策略略有不同。

参考《深入理解》P170数据对齐。

linux策略:linux/IA32 (Intel Architecture 32)下,基本类型按其占用字节大小对齐。(即该类型变量的首地址能被sizeof(类型)整除,基本类型是指泛整形和浮点类型)。

结构体按其最大成员变量的对齐规则对齐。若结构体按n个字节对齐,那么结构体的大小也要能被n整除。

结构体内的成员按上图的方式对齐。

struct S{ int a; char b; }; 该结构体按其最大成员int的对齐规则对齐。

结构体struct S 按4个字节对齐,即它的首地址和大小必须都能被4整除。

因为有对齐的要求就出现了内存填充(空着若干个字节,不使用)。

A

B

C

D

E

3.42

如何尽量避免填充带来的分析影响:结构体定义按成员对齐规则从大到小书写,这样填充只会在尾部填充。当然,逻辑关系的考虑也很重要。

位域:整形类型(一般用unsigned int)

不能对结构体里的位字段取地址。

判断一个char ch=0x12字节内位序

共用体:首地址对齐。

判断系统是否为大端

指向函数的指针及库函数的使用:exit atexit

《C语言495个问题》1.36 4.12

枚举类型的使用:对一类宏的整体定义。

struct week{Sunday, };

使用库函数进行文件操作:缓冲区设置函数,文件操作库函数的使用。

学习对这些函数的使用时,请同学们参考《apue》第五章,这里会告诉大家函数的优点、缺点。比谭浩强的书描述要准确。

文件流:是全缓冲的。可以使用fseek进行位置移动。

标准输入输出流:是行缓冲的。不可以使用fseek等移动读写位置

标准错误输出流:是不缓冲的。不可以使用fseek等移动读写位置。P110

标准库函数区分文本文件和二进制文件。但在linux系统里并不对这两种文件区分,所以,在linux环境下,指定字符b作为type的一部分实际上不起作用。P113 const、volatile等限定符

restrict:是c99才支持的,形参指针用restrict修饰的函数,告诉编译器在该函数内只通过这一个指针引用他所指的内存。这样,编译器就可以对该指针的操作进行代码优化。编

译时需要在gcc后面加-std=c99

volatile:用该符号限定变量,告诉编译器每次使用到该变量值的时候,都要从存储它的位置重新取它的值。对于那些值容易变化的变量,需要加这个限定符。通常用在多线程编程中,嵌入式的硬件寄存器。

restrict和volatile都是为了方便编译器进行代码优化。

volatile int i=3; movl $3 -4(%ebp) ;

int b=i; movl -4(%ebp) %eax; movl %eax -8(%ebp);

int c=i; movl -4(%ebp) %eax ; movl %eax -12(%ebp)

大物知识点总结

大物知识点总结 第一部分声现象及物态变化 (一)声现象 1. 声音的发生:一切正在发声的物体都在振动,振动停止,发声也就停止。声音是由物体的振动产生的,但并不是所有的振动都会发出声音。 2. 声音的传播:声音的传播需要介质,真空不能传声 (1)声音要靠一切气体,液体、固体作媒介传播出去,这些作为传播媒介的物质称为介质。登上月球的宇航员即使面对面交谈,也需要靠无线电,那就是因为月球上没有空气,真空不能传声 (2)声间在不同介质中传播速度不同 3. 回声:声音在传播过程中,遇到障碍物被反射回来人再次听到的声音叫回声 (1)区别回声与原声的条件:回声到达人的耳朵比原声晚0.1秒以上。 (2)低于0.1秒时,则反射回来的声间只能使原声加强。 (3)利用回声可测海深或发声体距障碍物有多运 4. 音调:声音的高低叫音调,它是由发声体振动频率决定的,频率越大,音调越高。 5. 响度:声音的大小叫响度,响度跟发声体振动的振幅大小有关,还跟声源到人耳的距离远近有关 6. 音色:不同发声体所发出的声音的品质叫音色 7. 噪声及来源 从物理角度看,噪声是指发声体做无规则地杂乱无章振动时发出的声音。从环保角度看,凡是妨碍人们正常休息、学习和工作的声音都属于噪声。 8. 声音等级的划分 人们用分贝来划分声音的等级,30dB—40dB是较理想的安静环境,超过50dB 就会影响睡眠,70dB以上会干扰谈话,影响工作效率,长期生活在90dB以上的噪声环境中,会影响听力。 9. 噪声减弱的途径:可以在声源处、传播过程中和人耳处减弱 (二)物态变化 1 温度:物体的冷热程度叫温度

2摄氏温度:把冰水混合物的温度规定为0度,把1标准大气压下沸水的温度规定为100度。 3温度计 (1)原理:液体的热胀冷缩的性质制成的 (2)构造:玻璃壳、毛细管、玻璃泡、刻度及液体 (3)使用:使用温度计以前,要注意观察量程和认清分度值 4.使用温度计做到以下三点 ①温度计与待测物体充分接触 ②待示数稳定后再读数 ③读数时,视线要与液面上表面相平,温度计仍与待测物体紧密接触 5.体温计,实验温度计,寒暑表的主要区别 构造量程分度值用法 体温计玻璃泡上方有缩口 35—42℃ 0.1℃①离开人体读数 ②用前需甩 实验温度计无—20—100℃ 1℃不能离开被测物读数,也不能甩 寒暑表无—30 —50℃ 1℃同上 6.熔化和凝固 物质从固态变成液态叫熔化,熔化要吸热 物质从液态变成固态叫凝固,凝固要放热 7.熔点和凝固点 (1)固体分晶体和非晶体两类 (2)熔点:晶体都有一定的熔化温度,叫熔点 (3)凝固点:晶体者有一定的凝固温度,叫凝固点 同一种物质的凝固点跟它的熔点相同 8.物质从液态变为气态叫汽化,汽化有两种不同的方式:蒸发和沸腾,这两种方式都要吸热 9.蒸发现象 (1)定义:蒸发是液体在任何温度下都能发生的,并且只在液体表面发生的汽化现象 (2)影响蒸发快慢的因素:液体温度高低,液体表面积大小,液体表面空气流动的快慢

(完整版)非常实用的数据结构知识点总结

数据结构知识点概括 第一章概论 数据就是指能够被计算机识别、存储和加工处理的信息的载体。 数据元素是数据的基本单位,可以由若干个数据项组成。数据项是具有独立含义的最小标识单位。 数据结构的定义: ·逻辑结构:从逻辑结构上描述数据,独立于计算机。·线性结构:一对一关系。 ·线性结构:多对多关系。 ·存储结构:是逻辑结构用计算机语言的实现。·顺序存储结构:如数组。 ·链式存储结构:如链表。 ·索引存储结构:·稠密索引:每个结点都有索引项。 ·稀疏索引:每组结点都有索引项。 ·散列存储结构:如散列表。 ·数据运算。 ·对数据的操作。定义在逻辑结构上,每种逻辑结构都有一个运算集合。 ·常用的有:检索、插入、删除、更新、排序。 数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。 ·结构类型:由用户借助于描述机制定义,是导出类型。 抽象数据类型ADT:·是抽象数据的组织和与之的操作。相当于在概念层上描述问题。 ·优点是将数据和操作封装在一起实现了信息隐藏。 程序设计的实质是对实际问题选择一种好的数据结构,设计一个好的算法。算法取决于数据结构。 算法是一个良定义的计算过程,以一个或多个值输入,并以一个或多个值输出。 评价算法的好坏的因素:·算法是正确的; ·执行算法的时间; ·执行算法的存储空间(主要是辅助存储空间); ·算法易于理解、编码、调试。 时间复杂度:是某个算法的时间耗费,它是该算法所求解问题规模n的函数。 渐近时间复杂度:是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。 评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度。 算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。 时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O (n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。

C语言中指针和数组名的用法,结构体与共用体的总结

C语言中指针和数组名的用法,结构体与共用体的总结 2010-01-11 19:38 在C语言中,指针和数组名通常都可以混用。 例如 char *p; 访问时,*p跟p[0]是一样的,*(p+1)跟p[1]是一样的。 对于数组 char b[5]; 访问时,b[0]跟*b是一样的,b[2]跟*(b+2)是一样的。 在一般的通信中(例如串口),通常都使用字节传输。而像float,long int 之类的, 有4字节。我的方法就是取它的地址,强制转换为char型指针,然后当作数组来用。 float x; SBUF=((char*)&x)[0]; SBUF=((char*)&x)[1]; SBUF=((char*)&x)[2]; SBUF=((char*)&x)[3]; 接收时,刚好倒过来。 更有趣的是,对于数组形式,数组名和后面的偏移量可以随便换。 char buff[10]; //或者用 char *buff=&buffer; buff[3]=0xaa; 3[buff]=0xaa; //两者是一样的 因此,我认为编译器是这么做的:对于形如xxx[yyy]这样的表达式,会转化为*(xxx+yyy), 因此写成xxx[yyy]或者写成yyy[xxx]都无所谓了... c语言结构体与共用体学习笔记1 Author:yuexingtian Date:Thursday, June 12, 2008 1结构变量的赋值 测试结果:

{ struct stu { int num; char *name; char sex; float score; }boy1,boy2; boy1.num=15; https://www.wendangku.net/doc/a917178255.html,="yuexingtian"; printf("input sex and score\n"); scanf("%c %f",&boy1.sex,&boy1.score); boy2=boy1; printf("Number=%d\nName=%s\n",boy2.num,https://www.wendangku.net/doc/a917178255.html,); printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score); getch(); } 说明: 本程序中用赋值语句给num和name两个成员赋值,name是一个字符串指针变量。用scanf函数动态地输入sex和score成员值,然后把boy1的所有成员的值整体赋予boy2。最后分别输出boy2的各个成员值。本例表示了结构变量的赋值、输入和输出的方法。 2结构变量的初始化 对结构变量的初始化(还拿上例举例)

C语言指针知识点总结精编版

C语言指针知识点总结公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-

指 针 ★指针的重要性 表示一些复杂的数据结构 快速传递数据 使函数返回一个以上的值 能直接访问硬件 能方便处理字符串 是理解面向对象语言中引用的基础 总结:指针是C 语言的灵魂 ★指针的定义 ☆地址 内存单元的编号 从零开始的非负整数 范围:4G ☆指针 1.指针就是地址,地址就是指针 2.指针变量是存放地址的变量 3.指针和指针变量是两个不同的概念 4.叙述时通常把指针变量简称为指针,实际它们含义不一样 5.指针的本质就是一个操作受限的非负整数 ★指针的分类 ☆基本类型指针(重要) Int f(int i,int j) { return 100; // return 88;error } Int main (void) { # include Void g(int*p,int*q) { *p=1; *q=2; } Int main(void) {

#include int main(void) { int *p; //p是变量的名字,int*表示p变量存放的是int类型变量的地址 Int*p;不表示定义了一个名字叫做*p的变量 Int*p;应该理解为:p是变量名,p变量的数据类型是int*类型 所谓int*类型,实际就是存放int变量地址的类型 int i=3; char ch=’A’ p=&i; //OK 1.p保存了i的地址,因此p指向i 2.p不是i,i也不是p,修改p的值不影响i的值,修改i 的值也不影响p的值 3.如果一个指针变量指向了某个普通变量,则*指针变量完全等同于普通变量 例:若p指向i,则*p=i (*p和i 可互相替换) p=&ch;//error //p=i; //error,因为类型不一致,p只能存放int类型变量的地址,不能存放int类型变量

大学物理下册知识点总结(期末)

大学物理下册 学院: 姓名: 班级: 第一部分:气体动理论与热力学基础 一、气体的状态参量:用来描述气体状态特征的物理量。 气体的宏观描述,状态参量: (1)压强p:从力学角度来描写状态。 垂直作用于容器器壁上单位面积上的力,是由分子与器壁碰撞产生的。单位 Pa (2)体积V:从几何角度来描写状态。 分子无规则热运动所能达到的空间。单位m 3 (3)温度T:从热学的角度来描写状态。 表征气体分子热运动剧烈程度的物理量。单位K。 二、理想气体压强公式的推导: 三、理想气体状态方程: 1122 12 PV PV PV C T T T =→=; m PV RT M ' =;P nkT = 8.31J R k mol =;23 1.3810J k k - =?;231 6.02210 A N mol- =?; A R N k = 四、理想气体压强公式: 2 3kt p nε =2 1 2 kt mv ε=分子平均平动动能 五、理想气体温度公式: 2 13 22 kt mv kT ε== 六、气体分子的平均平动动能与温度的关系: 七、刚性气体分子自由度表 八、能均分原理: 1.自由度:确定一个物体在空间位置所需要的独立坐标数目。 2.运动自由度: 确定运动物体在空间位置所需要的独立坐标数目,称为该物体的自由度 (1)质点的自由度: 在空间中:3个独立坐标在平面上:2 在直线上:1 (2)直线的自由度: 中心位置:3(平动自由度)直线方位:2(转动自由度)共5个 3.气体分子的自由度 单原子分子 (如氦、氖分子)3 i=;刚性双原子分子5 i=;刚性多原子分子6 i= 4.能均分原理:在温度为T的平衡状态下,气体分子每一自由度上具有的平均动都相等,其值为 1 2 kT 推广:平衡态时,任何一种运动或能量都不比另一种运动或能量更占优势,在各个自由度上,运动的机会均等,且能量均分。 5.一个分子的平均动能为: 2 k i kT ε=

数组及指针 知识点总结

第9章数组 第1课 知识点一 定义一维数组 格式: 类型名数组名[元素个数] 例1 定义一个包含4个整数的数组a int a[4]; 例2 定义一个包含3个双精度数的数组b double b[3]; 注意: C语言中数组的下界从0开始计数。 例如: a[4]的4个元素分别为a[0]、a[1]、a[2]、a[3] 知识点二 一维数组的初始化 用一对大括号将数组的初值括起来。 例1 int a[3]={1, 2, 3}; 此例中a[0]值为1、a[1]值为2、a[2]值为3

例2 int a[5]={0}; 此例中数组a的全部元素值均为0 例3 int a[3]={1, 2, 3, 4}; 此例中由于初值个数多于数组元素个数,所以非法。例4 int a[ ]={0, 0, 0, 0}; 此例中省略数组元素个数,初值为4个0 等价于int a[4]={0}; 注意: 数组名是一个常量值,不能对它赋值。 例如: int a[3]; a=5; 此语句非法,应改为a[0]=5; 知识点三 一维数组应用 例1 从键盘上输入10个整数,输出最大数和最小数。 #include main() { int a[10],i,max,min; printf("请输入10个整数:\n");

for(i=0;i<=9;i++) scanf("%d",&a[i]); max=a[0]; min=a[0]; for(i=1;i<=9;i++) { if(a[i]>max) max=a[i]; if(a[i]

C语言中不同的结构体类型的指针间的强制转换详解

C语言中不同类型的结构体的指针间可以强制转换,很自由,也很危险。只要理解了其内部机制,你会发现C是非常灵活的。 一. 结构体声明如何内存的分布, 结构体指针声明结构体的首地址, 结构体成员声明该成员在结构体中的偏移地址。 变量的值是以二进制形式存储在内存中的,每个内存字节对应一个内存地址,而内存存储的值本身是没有整型,指针,字符等的区别的,区别的存在是因为我们对它们有不同的解读,param的值就是一个32位值,并且存储在某个内存单元中,通过这个32位值就能找到param所指向的结构的起始地址,通过这个起始地址和各个结构所包含变量离起始地址的偏移对这些变量进行引用, param->bIsDisable只是这种引用更易读的写法,只要param是指向 PAINT_PARAM的指针,那么param的值就肯定存在,param存在,偏移量已知,那么param->bIsDisable就肯定存在,只是要记住,param->bIsDisable只是代表了对param一定偏移地址的值。 不是说某个地址有那个结构体你才能引用,即使没有,你也能引用,因为你已经告诉了编译器param变量就是指向一个PAINT_PARAM结构体的变量并且指明了param的值,机器码的眼中是没有数据结构一说的,它只是机械的按照 指令的要求从内存地址取值,那刚才的例子来说,peg->x,peg->y的引用无论 0x30000000是否存在一个eg结构体都是合法的,如果0x30000000开始的8 个字节存在eg结构体,那么引用的就是这个结构体的值,如果这个位置是未定义的值,那么引用的结果就是这8个字节中的未定义值,内存位置总是存在的,而对内存中值的引用就是从这些内存位置对应的内存单元取值。 举个例子: typedefstruct_eg { int x; int y; }eg;

void指针小结

C/C++语言void及void指针深层探索 1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义: 这行语句编译时会出错,提示“illegal use of type 'void'”。不过,即使void a的编译不会出错,它也没有任何实际意义。 void真正发挥的作用在于: (1)对函数返回的限定; (2)对函数参数的限定。 我们将在第三节对以上二点进行具体说明。 众所周知,如果指针p1和p2的类型相同,那么我们可以直接在p1和p2间互相赋值;如果p1和p2指向不同的数据类型,则必须使用强制类型转换运算符把赋值运算符右边的指针类型转换为左边指针的类型。 例如: 其中p1 = p2语句会编译出错,提示“'=' : cannot convert from 'int *' to 'float *'”,必须改为: 而void *则不同,任何类型的指针都可以直接赋值给它,无需进行强制类型转换: 但这并不意味着,void *也可以无需强制类型转换地赋给其它类型的指针。因为“无类型”可以包容“有类型”,而“有类型”则不能包容“无类型”。道理很简单,我们可以说“男人和女人都是人”,但不能说“人是男人”或者“人是女人”。下面的语句编译出错: 提示“'=' : cannot convert from 'void *' to 'int *'”。 3.void的使用

C语言指针知识点总结

指 针 ★指针的重要性 表示一些复杂的数据结构 快速传递数据 使函数返回一个以上的值 能直接访问硬件 能方便处理字符串 是理解面向对象语言中引用的基础 总结:指针是C 语言的灵魂 ★指针的定义 ☆地址 内存单元的编号 从零开始的非负整数 范围:4G ☆指针 1.指针就是地址,地址就是指针 2.指针变量是存放地址的变量 3.指针和指针变量是两个不同的概念 4.叙述时通常把指针变量简称为指针,实际它们含义不一样 5.指针的本质就是一个操作受限的非负整数 ★指针的分类 ☆基本类型指针(重要) #include int main(void) { int *p; //p 是变量的名字,int*表示p 变量存放的是int 类型变量的地址 Int*p;不表示定义了一个名字叫做*p 的变量 Int*p;应该理解为:p 是变量名,p 变量的数据类型是int*类型 所谓int*类型,实际就是存放int 变量地址的类型 int i=3; char ch=’A ’ p=&i; //OK 1.p 保存了i 的地址,因此p 指向i 2.p 不是i ,i 也不是p ,修改p 的值不影响i 的值,修改i 的值也不影响p 的值 3.如果一个指针变量指向了某个普通变量,则*指针变量 完全等同于 普通变量 例:若p 指向i ,则*p=i (*p 和i 可互相替换) p=&ch;//error //p=i; //error,因为类型不一致,p 只能存放int 类型变量的地址,不能存放int 类型变量 //P=55;//error,原因同上 return 0; } △附注: ?*的含义: 1.乘法 Int f(int i,int j) { return 100; // return 88;error } Int main (void) { Int a=3,b=5; a=f(a,b); b=f(a,b); } 只能返回一个值 # include Void g(int*p,int*q) { *p=1; *q=2; } Int main(void) { Int a=3,b=5; g(&a,&b); Printf(“%d%d\n ”,a,b); Return 0; } 指针使函数返回一个以上的值

c语言指针实验报告

C语言实习报告 题目:指针及其应用 系别: 专业: 姓名: 学号: 日期:

一实验名称:指针及其应用 二实验目的: (1)掌握变量的指针及其基本用法。 (2)掌握一维数组的指针及其基本用法。 (3)掌握指针变量作为函数的参数时,参数的传递过程及其用法。 三实验内容: (1)运行以下程序,并从中了解变量的指针和指针变量的概念。 (2)运行以下程序,观察&a[0]、&a[i]和p的变化,然后回答以下问题: 1.程序的功能是什么? 2.在开始进入循环体之前,p指向谁? 3.循环每增加一次,p的值(地址)增加多少?它指向谁? 4.退出循环后,p指向谁? 5.你是否初步掌握了通过指针变量引用数组元素的方法? (3)先分析以下程序的运行结果,然后上机验证,并通过此例掌握通过指针变量引用数组元素的各种方法。

(4)编写函数,将n个数按原来的顺序的逆序排列(要求用指针实现),然后编写主函数完成: ①输入10个数; ②调用此函数进行重排; ③输出重排后的结果。 四分析与讨论: (1)指针的定义方法,指针和变量的关系。 定义方法: 数据类型 *指针变量名; 如定义一个指向int型变量的指针—— int *p;

则我们可以继续写如下代码—— int a = 4; p = &a; printf("%d", *p); 在这里,我们定义了一个变量a,我们把它理解为内存空间连续的4个字节(int型占用4字节),则这4个字节的空间保存着一个数4。&是取地址符号,即把变量a的地址(即这4个字节的首地址)赋给指针p (记住指针p的类型和变量a的类型要保持一致,否则的话,要进行类型转换)。这样子,指针p就保存着变量a的地址。我们如果把指针p当做内存空间里面另外一个连续的4个字节,那么这4个字节保存的数就是变量a的地址。printf("%d",*p)和printf("%d",a)的结果是一样的。这里的*是取变量符号(与&刚好作用相反,通过变量的地址找到变量),与定义时int *p的*号作用不同(定义时的*表示该变量是个 指针变量,而非是取它指向的变量)。 (2)数组和指针的关系。 指针与数组是C语言中很重要的两个概念,它们之间有着密切的关系,利用这种关系,可以增强处理数组的灵活性,加快运行速度,本文着重讨论指针与数组之间的联系及在编程中的应用。 1.指针与数组的关系 当一个指针变量被初始化成数组名时,就说该指针变量指向了数组。如: char str[20], *ptr; ptr=str; ptr被置为数组str的第一个元素的地址,因为数组名就是该数组的首地址,也是数组第一个元素的地址。此时可以认为指针ptr就是数组str(反之不成立),这样原来对数组的处理都可以用指针来实现。如对数组元素的访问,既可以用下标变量访问,也可以用指针访问。 2.指向数组元素的指针 若有如下定义: int a[10], *pa; pa=a; 则p=&a[0]是将数组第1个元素的地址赋给了指针变量p。 实际上,C语言中数组名就是数组的首地址,所以第一个元素的地址可以用两种方法获得:p=&a[0]或p=a。 这两种方法在形式上相像,其区别在于:pa是指针变量,a是数组名。值得注意的是:pa是一个可以变化的指针变量,而a是一个常数。因为数组一经被说明,数组的地址也就是固定的,因此a是不能变化的,不允许使用a++、++a或语句a+=10,而pa++、++pa、pa+=10则是正确的。由此可见,此时指针与数组融为一体。 3.指针与一维数组 理解指针与一维数组的关系,首先要了解在编译系统中,一维数组的存储组织形式和对数组元素的访问方法。 一维数组是一个线形表,它被存放在一片连续的内存单元中。C语言对数组的访问是通过数组名(数组的起始地址)加上相对于起始地址的相对量(由下标变量给出),得到要访问的数组元素的单元地址,然后再对计算出的单元地址的内容进行访问。通常把数据类型所占单元的字节个数称为扩大因子。 实际上编译系统将数组元素的形式a[i]转换成*(a+i),然后才进行运算。对于一般数组元素的形式:<数组名>[<下标表达式>],编译程序将其转换成:*(<数组名>+<下标表达式>),其中下标表达式为:下标表达式*扩大因子。整个式子计算结果是一个内存地址,最后的结果为:*<地址>=<地址所对应单元的地址的内容>。由此可见,C语言对数组的处理,实际上是转换成指针地址的运算。 数组与指针暗中结合在一起。因此,任何能由下标完成的操作,都可以用指针来实现,一个不带下标的数组名就是一个指向该数组的指针。

C语言指针知识点总结

指 针 ★指针的重要性 表示一些复杂的数据结构 快速传递数据 使函数返回一个以上的值 能直接访问硬件 能方便处理字符串 是理解面向对象语言中引用的基础 总结:指针是C 语言的灵魂 ★指针的定义 ☆地址 内存单元的编号 从零开始的非负整数 范围:4G ☆指针 1.指针就是地址,地址就是指针 2.指针变量是存放地址的变量 3.指针和指针变量是两个不同的概念 4.叙述时通常把指针变量简称为指针,实际它们含义不一样 5.指针的本质就是一个操作受限的非负整数 ★指针的分类 ☆基本类型指针(重要) #include<> int main(void) { int *p; 果一个指针变量指向了某个普通变量,则*指针变量 完全等同于 普通变量 例:若p 指向i ,则*p=i (*p 和i 可互相替换) p=&ch;法 2.定义指针变量 Int*p; 针运算符 该运算符放在已经定义好的指针变量的前面 如果p 是一个已经定义好的指针变量 则*p 表示以p 的内容为地址的变量 ?如何通过被调函数修改主调函数普通变量的值 1.实参必须为该普通变量的地址 &... 2.形参必须为指针变量 *... 3.在被调函数中通过 *形参名=...... 的方式就可以修改主调函数相关变量的值 例子: 经典指针程序:互换数值 形参和实参是不同的变量,修改形参不会改变实参 ?指针常见错误 #include<> #include<> void huhuan (int a, int b ) { int t; t=a; a=b; b=t; #include<> void huhuan2(int *p, int *q ) { int *t;//如果要互换p 和q 的值, 则t 必须是int*,不能是int t=p; p=q; #include<> void huhuan3(int *p, int*q ) //形参的名字是p 和q ,接收实参数据的是p 和q ,而不是*p 和*q { int t;//如果要互换*p 和*q 的值, 则t 必须是int ,不能是int* t=*p;//p 是int*,*p 是int Int f(int i,int j) { return 100; // return 88;error } Int main (void) { Int a=3,b=5; a=f(a,b); b=f(a,b); } 只能返回一个值 # include <> Void g(int*p,int*q) { *p=1; *q=2; } Int main(void) { Int a=3,b=5; g(&a,&b); Printf(“%d%d\n ”,a,b); Return 0; } 指针使函数返回一个以上的值

C语言入门教程-指向结构体的指针

C语言入门教程-指向结构体的指针 2009年07月29日12:04 [导读] 指向结构体的指针 在C语言中几乎可以创建指向任何类型的指针,包括用户自定义的类型。创建结构体指针是极常见的。下面是一个例子: typedef struct{

关键词:c语言入门 指向结构体的指针 在C语言中几乎可以创建指向任何类型的指针,包括用户自定义的类型。创建结构体指针是极常见的。下面是一个例子: typedef struct

{char name[21];char city[21];char state[3];} Rec; typedef Rec *RecPointer; RecPointer r; r=(RecPointer)malloc(sizeof(Rec)); r是一个指向结构体的指针。请注意,因为r是一个指针,所以像其他指针一样占用4个字节的内存。而malloc语句会从堆上分配45字节的内存。*r是一个结构体,像任何其他Rec类型的结构体一样。下面的代码显示了这个指针变量的典型用法:

strcpy((*r).city, "Raleigh"); strcpy((*r).state, "NC"); printf("%sn", (*r).city); free(r); 您可以像对待一个普通结构体变量那样对待*r,但在遇到C的操作符优先级问题时要小心。如果去掉*r两边的括号则代码将无法编译,因为“.”操作符的优先级高于“*”操作符。使用结构体指针时不断地输入括号是令人厌烦的,为此C语言引入了一种简记法达到相同的目的:

r->这种写法和(*r).是完全等效的,但是省去了两个字符。 指向数组的指针 还可以创建指向数组的指针,如下所示:

C语言指针教学中的知识点分析与总结-最新教育文档

C语言指针教学中的知识点分析与总结 C语言是一门重要的计算机基础课程,指针是C语言的精华。 而指针应用范围广、使用灵活等特点时常让初学者感到困惑。 用指针可以访问各种类型的数据,能够实现动态存储分配,提高编程效率,加深对数据存储方式的理解。本文从指针的基本概念,指针在数组、函数、字符串、动态存储分配等方面的应用入手,剖析指针与各部分基础知识相结合时的教学重点和难点。利用对比的方法指出初学者在学习指针过程中易混的概念及注意事项,有利于初学者对指针的理解和掌握。 1指针基本概念的理解 指针学习首先应掌握其基本概念。指针即地址、地址即指针。 程序运行过程中,变量、数组、函数等都存放在内存的存储单元中,每个存储单元都有地址。使用变量、数组、函数既可以直接访问,又可以利用其存储单元地址进行间接访问,这种间接访问便是借助指针来完成的。 1.1对指针类型的理解 理解指针概念要从指针类型入手,教师在教学中应着重讲述 指针类型的含义,以及与普通变量类型的区别。指针定义时的类型称为指针的基础类型,理解上应区别于普通变量的类型。如定义: 由上表可以看出,普通变量的数据类型决定了其占用内存单 元的字节数以及存放数值的范围。而指针变量不论其基础类型为何种类型,均占用4 个字节的存储空间。并且指针变量与普通变量最大的区别在于,指针变量存地址值,而普通变量存数值。 1.2指针运算符的理解 1.2.1对取地址符“ &”的理解 指针变量定义后应为其赋一个有效地址值,让它指向有效的存储空间。未赋值的指针变量称为“悬空”指针,使用悬空指针非常危险,可能会导致系统崩溃。为指针变量赋值时常要用到取地址运算符“ &”。令

力学知识点归纳总结归纳

力学知识点总结 一、力知识归纳 1.什么是力:力是物体对物体的作用。 2.物体间力的作用是相互的。(一个物体对别的物体施力时,也同时受到 后者对它的力)。 3.力的作用效果:力可以改变物体的运动状态,还可以改变物体的形状。 (物体形状或体积的改变,叫做形变。) 4.力的单位是:牛顿(简称:牛),符合是N。1牛顿大约是你拿起两个鸡蛋 所用的力。 5.弹力弹簧测力计 弹性:物体受力发生形变,不受力时又恢复到原来的形状,物体的这种性质叫弹性。 塑性:物体受力后不能自动恢复原来的形状,物体的这种性质叫塑性。 弹力:物体由于发生弹性形变而产生的力。 实验室测力的工具是:弹簧测力计。 (1)弹簧测力计原理:在弹性限度内,弹簧受到的拉力越大,弹簧的伸长就越长。(或在弹性限度内,弹簧的伸长的长度(△L)跟受到的拉力成正比) (2)弹力的计算:胡克定律:在弹性限度内,弹簧弹力的大小和弹簧的伸长(或缩短)成正比。 其数学表达式为:F=k△X,其中k称为弹簧的劲度系数(一般是常数),单位式N/m。F是拉力,△X是弹簧的伸长或缩短。 (3)弹簧测力计的使用注意事项: ①使用前,要先估计被测力的大小,以免被测力太大,损坏弹簧; ②使用前,认清分度值和量程; ③使用前,要检查指针是否指在零刻度处,如果不是,则要先调零; ④挂物前,来回拉动弹簧的挂钩几次(防止指针卡在外壳上),并观察每次松手后,指针是否回到零刻度线处; ⑤测量时,力要沿着弹簧的轴线方向,勿使弹簧或弹簧指针与外壳接触摩擦; ⑥测量时,力不能超过弹簧测力计的量程; ⑦待指针稳定后再读数;读数时,视线必须与刻度盘垂直。 (4)弹簧测力计的构造:提环、弹簧、指针、刻度盘、挂钩; 注:假如弹簧测力计无法调零,则采用如下方法:测量前先读出指针示数,然后测量力后再读出示数,用第2次示数减去第1次示数即为被测力的大小。 6.力的三要素是:力的大小、方向、作用点,叫做力的三要素,它们都能影响力的作用效果。 7.力的示意图就是用一根带箭头的线段来表示力。具体的画法是: (1)用线段的起点表示力的作用点; (2)延力的方向画一条带箭头的线段,箭头的方向表示力的方向; (3)若在同一个图中有几个力,则力越大,线段应越长。有时也可以 在力的示意图标出力的大小, 8.万有引力:宇宙间任何两个物体,大到天体,小到灰尘之间,都存在互相吸引的力。 重力:地面附近物体由于地球吸引而受到的力叫重力。重力的方向总是竖直向下的。 (1)重力的计算公式:G=mg,(式中g是重力与质量的比值:g=9.8牛顿/千克,在粗略计算时也可取g=10牛顿/千克);重力跟质量成正比。 (2)重垂线是根据重力的方向总是竖直向下的原理制成。 (3)重力的作用点(重心):地球吸引物体的每一个部分,但是,对于整个物体,重力的作用好像作用在一个点,这个点叫重心。(形状规则、质地均匀的物体的重心在它的几何中心)

C语言复习题指针结构体

C语言复习题_指针&结构体 一、选择 1、若有以下定义:char s[20]="programming",*ps=s; 则不能代表字符'o'的表达式是A。 A) ps+2 B) s[2] C) ps[2] D) ps+=2,*ps 2、若有以下定义和语句: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示a数组元素的表达式是B。 A) *p B) a[10] C) *a D) a[p-a] 3、已知int *p,a; p=&a; 这里的运算符& 的含义D。 A) 位与运算B) 逻辑与运算C) 取指针内容D) 取变量地址 4、定义结构体如下: struct student { int num; char name[4]; int age; }; 则printf(“%d”,sizeof(struct student))的结果为: 12。 5、若有定义如下:int i=3,*p=&i; 显示i的值的正确语句是B。 A) printf(“%d”,p); B) printf(“%d”,*p); C) printf(“%p”,*p); D) printf(“%p”,p); 6、在定义结构体时,下列叙述正确的是A。 A) 系统不会分配空间 B) 系统会按成员大小分配空间 C) 系统会按最大成员大小分配空间 D) 以上说法均不正确 7、指针是一种D。 A) 标识符B) 变量C) 运算符D) 内存地址 8、定义struct s {int x; char y[6];} s1;,请问正确的赋值是C。 A) s1.y=”abc”; B) s1->y=”abc”; C) strcpy(s1.y,”abc”); D) s1.strcpy(y,”abc”); 9、已知定义“int x =1, *p”,则合法的赋值表达式是A。 A) p =&x B) p = x C) *p =&x D) *p =*x

大物知识点梳理完整版

大物知识点整理 第一章︰质点运动学 1质点运动的描述 位置矢量︰从所指定的坐标原点指向质点所在位置的有向 线段。 运动方程︰ 位移︰从质点初始时刻位置指向终点时刻位置的有向线段 速度︰表示物体运动的快慢。 瞬时速率等于瞬时速度的大小 2圆周运动 角加速度α=Δω / Δt 角速度ω=Φ/t=2π/T=2πf 线速度V=s/t=2πR/T, ω×r=V 切向加速度沿切向方向 法向加速度 指向圆心 加速度 k z j y i x r ++=2 2 2 z y x r ++=

例题 1 已知质点的运动方程x=2t,y=2-t^2,则t=1时质点的位置矢量是()加速度是(),第一秒到第二秒质点的位移是(),平均速度是()。(详细答案在力学小测中) 注意:速度≠速率 平时作业:P36 1.6 1.11 1.13 1.16 (1.19建议看一下) 第二章:牛顿定律 1、牛顿第一定律:1任何物体都具有一种保持其原有运动状态 不变的性质。 2力是改变物体运动状态的原因。 2、牛顿第二定律:F=ma 3、牛顿第三定律:作用力与反作用力总是同时存在,同时消失,分别作用在两个不同的物体上,性质相同。 4、非惯性系和惯性力 非惯性系:相对于惯性系做加速运动的参考系。 惯性力:大小等于物体质量与非惯性系加速度的乘积,方向与非惯性加速度的方向相反,即F=-ma 例题: P51 2.1 静摩擦力不能直接运算。 2.2 对力的考察比较全面,类似题目P64 2.1 2.2 2.6 2.3运用了微积分,这种题目在考试中会重点考察,在以后

章节中都会用到,类似P66 2.13

该章节对惯性力涉及较少,相关题目有P57 2.8 P65 2.7(该题书 中的答案是错的,请注意,到时我会把正确答案给你们。)P67 2.17. 第三章 动量守恒定律与能量守恒定律 1动量P=mv 2冲量 其方向是动量增量的方向。 Fdt=dP 3动量守恒定律P=C (常量) 条件:系统所受合外力为零。若系统所受合外力不为零,但沿某一方向合力为零时,则系统沿该方向动量守恒。 4碰撞:⑴完全弹性碰撞 动量守恒,动能守恒 ⑵非弹性碰撞 动量守恒,动能不守恒 ⑶完全非弹性碰撞 动量守恒,动能不守恒 详细参考P115 5质心运动定律 ⑴质心位置矢量 1)对于密度均匀,形状对称的物体,其质心在物体的几何中心处; ?=-21 12 t t dt F I P P =1 2v m v m dt F I -=?=??? ?= ==zdm M z ydm M y xdm M x c c c 1 ,1 ,1?=dm r M r c 1

c语言结构体指针初始化===

c语言结构体指针初始化 今天来讨论一下C中的内存管理。 记得上周在饭桌上和同事讨论C语言的崛起时,讲到了内存管理方面 我说所有指针使用前都必须初始化,结构体中的成员指针也是一样 有人反驳说,不是吧,以前做二叉树算法时,他的左右孩子指针使用时难道有初始化吗 那时我不知怎么的想不出理由,虽然我还是坚信要初始化的 过了几天这位同事说他试了一下,结构体中的成员指针不经过初始化是可以用(左子树和右子树指针) 那时在忙着整理文档,没在意 今天抽空调了一下,结论是,还是需要初始化的。 而且,不写代码你是不知道原因的(也许是对着电脑久了IQ和记性严重下跌吧) 测试代码如下 1.#include 2.#include 3.#include 4. 5.struct student{ 6.char *name; 7.int score; 8.struct student* next; 9.}stu,*stu1; 10. 11.int main(){ 12. https://www.wendangku.net/doc/a917178255.html, = (char*)malloc(sizeof(char)); /*1.结构体成员指针需要初始化*/ 13. strcpy(https://www.wendangku.net/doc/a917178255.html,,"Jimy"); 14. stu.score = 99; 15. 16. stu1 = (struct student*)malloc(sizeof(struct student));/*2.结构体指针需要初始化*/ 17. stu1->name = (char*)malloc(sizeof(char));/*3.结构体指针的成员指针同样需要初始化*/ 18. stu.next = stu1; 19. strcpy(stu1->name,"Lucy"); 20. stu1->score = 98; 21. stu1->next = NULL; 22. printf("name %s, score %d \n ",https://www.wendangku.net/doc/a917178255.html,, stu.score); 23. printf("name %s, score %d \n ",stu1->name, stu1->score); 24. free(stu1); 25.return 0; 26.} #include #include #include struct student{ char *name; int score; struct student* next; }stu,*stu1; int main(){ https://www.wendangku.net/doc/a917178255.html, = (char*)malloc(sizeof(char)); /*1.结构体成员指针需要初始化*/ strcpy(https://www.wendangku.net/doc/a917178255.html,,"Jimy"); stu.score = 99; stu1 = (struct student*)malloc(sizeof(struct student));/*2.结构体指针需要初始化*/ stu1->name = (char*)malloc(sizeof(char));/*3.结构体指针的成员指针同样需要初始化*/ stu.next = stu1; strcpy(stu1->name,"Lucy"); stu1->score = 98; stu1->next = NULL; printf("name %s, score %d \n ",https://www.wendangku.net/doc/a917178255.html,, stu.score);

大学物理下期末知识点重点总结(考试专用)

1.相对论 1、力学相对性原理和伽利略坐标变换。(1)牛顿力学的一切规律在伽利略变换下其形式保持不变,亦即力学规律对于一切惯性参考系都是等价的。(2)伽利略坐标换算。 2、狭义相对论的基本原理与时空的相对性。(1)在所有的惯性系中物理定律的表达形式都相同。(2)在所有的惯性系中真空中的光速都具有相同的量值。(3)同时性与所选择的参考系有关。(4)时间膨胀。在某一惯性参考系中同一地点先后发生的两个事件的时间间隔。(5)长度收缩。在不同的惯性系中测量出的同一物体的长度差。 3、当速度足够快时,使用洛伦兹坐标变换和相对论速度变换。但是当运动速度远小于光速时,均使用伽利略变换。 4、光的多普勒效应。 当光源相对于观察者运动时,观察者接受到的频率不等于光源实际发出的频率。 5、狭义相对论揭示出电现象和磁现象并不是互相独立的,即表现为统一的电磁场。 2.气体动理论 一.理想气体状态方程: 112212 PV PV PV C =→=; m PV R T M ' = ; P nkT = 8.31J R k mol = ;231.3810J k k -=?; 2316.02210A N mol -=?;A R N k = 二. 理想气体压强公式 2 3kt p n ε= 分子平均平动动能 1 2kt m ε= 三. 理想气体温度公式 1322kt m kT ε== 四.能均分原理 自由度:确定一个物体在空间位置所需要的独立坐标数目。 气体分子的自由度 单原子分子 (如氦、氖分子)3i =;刚性双原子分子5i =;刚性多原子分子6i = 3. 能均分原理:在温度为T 的平衡状态下,气体分子每一自由度上具有的平均动都相等, 其值为1kT 4.一个分子的平均动能为:k i kT ε= 五. 理想气体的内能(所有分子热运动动能 之和) 1.1m ol 理想气体i E R T = 一定量理想气体 ()2i m E R T M ν ν' == 3.热力学 一.准静态过程(平衡过程) 系统从一个平衡态到另一个平衡态,中间经历的每一状态都可以近似看成平衡态过程。 二.热力学第一定律 Q E W =?+;dQ dE dW =+ 1.气体2 1 V V W Pdv = ? 2.,,Q E W ?符号规定 3. 2121()V m V m m m dE C dT E E C T T M M ''= -=- 或 V m i C R = 三.热力学第一定律在理想气体的等值过程和绝热过程中的应用 1. 等体过程 210()V m W Q E C T T ν=?? ? =?=-?? 2. 等压过程 212121()()()p m W p V V R T T Q E W C T T νν=-=-?? ? =?+=-?? C 2 ,1 2C p m p m V m V m i C C R R γ+=+=> 热容比= 3.等温过程 212211 0T T E E m V m p Q W R T ln R T ln M V M p -=? ? ''? ===?? 绝热过程 210()V m Q W E C T T ν=?? ? =-?=--?? 绝热方程1P V C γ =, -1 2V T C γ= , 13P T C γγ--= 。 四.循环过程 特点:系统经历一个循环后,0E ?= 系 统 经 历 一 个 循 环 后 Q W =(代数和)(代数和) 正循环(顺时针)-----热机 逆循环(逆时针)-----致冷机 热机效率: 122111 1Q Q Q W Q Q Q η-= ==- 式中:1Q ------在一个循环中,系统从高温热源吸收的热量和; 2Q ------在一个循环中,系统向低温热源放 出的热量和; 12W Q Q =-------在一个循环中,系统对外 做的功(代数和)。 卡诺热机效率: 2 1 1c T η=- 式中: 1T ------高温热源温度;2T ------低温热源温度; 4. 制冷机的制冷系数: 22 12 Q = Q -Q = 定义:Q e W 卡诺制冷机的制冷系数:22 1212 Q T e Q Q T T == -- 五. 热力学第二定律 开尔文表述:从单一热源吸取热量使它完全变为有用功的循环过程是不存在的(热机效 率为100%是不可能的)。 克劳修斯表述:热量不能自动地从低温物体传到高温物体。 两种表述是等价的. 4.机械振动 一. 简谐运动 振动:描述物质运动状态的物理量在某一数值附近作周期性变化。 机械振动:物体在某一位置附近作周期性的往复运动。 简谐运动动力学特征:F kx =- 简谐运动运动学特征:2 a x ω=- 简谐运动方程: cos()x A t w j =+ 简谐 振动物体 的速度 : () sin dx v A t w w j ==-+ 加速度() 2 2cos d x a A t w w j ==-+ 速度的最大值m v A w =, 加速度的最大值2m a A w = 二. 振幅A : A 取决于振动系统的能量。 角(圆)频率 w :22T p w pn ==,取决于振动 系统的性质 对于弹簧振子 w 、对于单摆 ω相位——t w j +,它决定了振动系统的运动 状态(,x v ) 0t =的相位—初相 arc v tg x j w -= 四.简谐振动的能量 以弹簧振子为例: 222221111 k p E E E mv kx m A kA ω=+= +== 五.同方向同频率的谐振动的合成 设 ()111cos x A t ω?=+ ()222cos x A t ω?=+ 12cos()x x x A t ω?=+=+ 合成振动振幅与两分振动振幅关系为: A A 1 122 1122cos cos tg A A ???=+ 合振动的振幅与两个分振动的振幅以及它们之间的相位差有关。 () 20 12k k ?π?==±± 12A A A + )12 ??± 12A A A - 一21可以取任意值 1212 A A A A A -<<+ 5.机械波 一.波动的基本概念 1.机械波:机械振动在弹性介质中的传播。 2. 波线——沿波传播方向的有向线段。 波面——振动相位相同的点所构成的曲面 3.波的周期T :与质点的振动周期相同。 波长λ:振动的相位在一个周期内传播的距离。 波速u:振动相位传播的速度。波速与介质的性质有关 二. 简谐波 沿ox 轴正方向传播的平面简谐波的波动方 程 质点的振动速度 ] )(sin[?ωω+--=??=u x t A t y v 质点的振动加速度 2cos[()]v x a A t t u ωω??= =--+? 这是沿ox 轴负方向传播的平面简谐波的波 动 方 程 。 c o s [ ()]c o s [2()] x t x y A t A u T ω?π ? = -+=-+ cos 2()t x y A T π?λ?? =++???? 三.波的干涉 两列波 频率相同,振动方向相同,相位相同或相位差恒定,相遇区域内出现有的地方振动始终加强,有的地方振动始终减弱叫做波的干涉现象。 两列相干波加强和减弱的条件: (1) ()π π ???k r r 221 212±=---=?) ,2,1,0(???=k 时, 2 1A A A += (振幅最大,即振动加强) ()()π λ π???1221212+±=---=?k r r ) ,2,1,0(???=k 时, 2 1A A A -= (振幅最小,即振动减弱) (2)若12??=(波源初相相同)时,取 21r r δ=-称为波程差。 212r r k δλ =-=±) ,2,1,0(???=k 时, 2 1A A A +=(振动加强) () 1212λ δ+±=-=k r r ) ,2,1,0(???=k 时, 2 1A A A -=(振动减弱); 其他情况合振幅的数值在最大值12 A A +和最小值 12A A -之间。 6.光学 杨氏双缝干涉(分波阵面法干涉) 1、 x d d d r ===-=θθδtan sin r 12波程差 2、明纹位置: λ k D x d ± =),2,1,0k ( = 3、暗纹位置: 2 ) 12(λd D k x +±=),2,1,0( =k 4、相邻明(暗)纹间距 λd D x = ? 4、若用白光照射,则除了中央明纹(k=0级)是白色之外,其余明纹为彩色。 二、分振幅法干涉 1、薄膜干涉(若两束反射光中有一束发生半波损失,则光程差δ在原来的基础上再加上 2 λ ;若两束光都有半波损失或都没有,则无 需加上λ )以下结果发生在入射光垂直入射时 ?? ???=+==+ -=)(),2,1,0(12) (),2,1(2 sin 222122暗纹)(明纹 k k k k i n n d λλλ δ 2、劈尖干涉(出现的是平行直条纹) 1)明、暗条纹的条件: ?? ? ??=+==+=) (),2,1,0(2)12() (),2,1(2 2暗纹明纹 k k k k nd λλλδ 2)相邻明纹对应劈尖膜的厚度差为n 2e 1λ=-=??+k k k d d d )(图中为 3)相邻明(暗)纹间距为θλθ λn n L 2sin 2≈ = 3、牛顿环(同心环形条纹,明暗环条件同劈尖干涉) 1)明环和暗环的半径: ) () ,2,1,0()(),2,1(2)12(暗环明环 == =-=k n kR r k n R k r λ λ ③相邻明环、暗环所对应的膜厚度差为 n 21λ= -=?+k k k d d d 。 三、迈克尔逊干涉仪 1)可移动反射镜移动距离d 与通过某一参考点条纹数目N 的关系为 2 λ N d = 2)在某一光路中插入一折射率n,厚d 的透明介质薄片时,移动条纹数N 与n 、d 的关系为 21n λN d =-)( 五、夫琅禾费衍射 1、明纹条件:????? =+±==),2,1(2)12(sin 0 k k a λ??(中央明纹) 2、暗纹条件: ),2,1(sin =±=k k a λ? 3、中央明纹宽度(为1±级暗纹间距离): a 2sin 2tan 20f f f l λ??≈ == 其它暗纹宽度: 2 sin sin tan tan 111o k k k k k k l a f f f f f x x l == -=-=-=+++????? 4、半波带数: 明纹(又叫极大)为(2k+1);暗纹(又叫极小)为(2k )。 六、衍射光栅 1、光栅常数d=a(透光宽度)+b (不透光宽度)=单位长度内刻痕(夹缝)数的倒数 2、光栅方程 ) ,2,1,0(sin ) =±=+k k b a λ?( 明纹(满足光栅方程的明纹称为主极大明纹) k=0、1、2、3 称为0级、1级、2级、 3级 明纹 3、缺级 条 件 ??? ????±±±==+±±±==+±±±==++=????±=±=+主极大消失 、、如果、、如果、、如果( 1284449633364222k sin sin )k k a b a k k a b a k k a b a k b a k a k b a λ?λ?七、光的偏振 1、马吕斯定律α2 cos I =I ( α为入射偏振 光的振动方向与偏振片的偏振化方向间的夹角) 2、布儒斯特定律1 20an n n i t = , 0i 称为布儒斯特 角或起偏角。 当入射角为布儒斯特角时,反射光为垂直于入射面的线偏振光,并且该线偏振光与折射光线垂直。 7.量子力学 光电效应 光电效应方程W m h m += 2 1 νγ(式中γ表示光子 的频率,W 表示逸出功) 02 U 1e m m =ν(0U 表示遏止电压) h γ=W ( 0γ表示入射光最低频率/红限频率) 说明了光具有粒子性。 光的波粒二象性 能量: γεh = 动量:22c h m mc γ ε= = 光子动量: λγh c h mc p == = 二、康普顿效应 1、散射公式 2sin 22sin 22200θλθλλλc c m h == -=? 2、说明了光具有粒子性。 四、实物粒子的波粒二象性 1、德布罗意波 h = λ 测不准关系 2 ≥ ???x P x (一定的数值) 2、波函数 1)归一化波函数 x n a x n π ψsin 2)(= ( a x <<0) 概率密度为2 )(x n ψ? =a n dx x 0 2 1 )(ψ 粒子能 量 ) 321(2 2 、、== n h n E n 2)标准化条件 单值性,有限性,连续性

相关文档
相关文档 最新文档