C语言程序设计 教学课件 作者 黄锐军 第7章 指针.ppt

C语言程序设计 教学课件 作者 黄锐军 第7章 指针.ppt

ID:50043710

大小:178.00 KB

页数:41页

时间:2020-03-08

C语言程序设计 教学课件 作者 黄锐军 第7章 指针.ppt_第1页
C语言程序设计 教学课件 作者 黄锐军 第7章 指针.ppt_第2页
C语言程序设计 教学课件 作者 黄锐军 第7章 指针.ppt_第3页
C语言程序设计 教学课件 作者 黄锐军 第7章 指针.ppt_第4页
C语言程序设计 教学课件 作者 黄锐军 第7章 指针.ppt_第5页
资源描述:

《C语言程序设计 教学课件 作者 黄锐军 第7章 指针.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7章指针在这一章中将介绍C语言程序的指针,指针是一内存中的地址,任何一个变量在内存中都有一个空间,这个空间有一个地址,这个地址就是变量的指针,通过指针可以实现对内存的直接访问。7.1指针概述7.2指针与函数参数7.3指针与数组7.4数组与函数参数7.5字符串与指针7.6指针与二维数组7.7动态数组7.1指针概述在计算机中,所有的数据都是存放在存储器中的,不同的数据类型所占用的内存单元数不等,如int整型量占4个字节,字符量占1个字节。为了正确地访问这些内存单元,必须为每个内存单元编上号,根据一个内存单元的编号即可准确地找到该内存单元。内存单元的编号也叫做地址。既然根据内存单元的编号或地址就

2、可以找到所需的内存单元,所以通常也把这个地址称为指针。7.1.2变量的指针与指针变量1.指针变量系统的指针地址可以用一个变量来存储,这个变量就是指针变量。指针变量的定义规则是:数据类型*变量名称;指针变量的定义与普通变量十分相似,只是在其中插入了一个“*”号,例如:int*p;p是指针变量,可以用来存储一个整数变量的地址,或称它指向一个整数变量。严格地说,一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量,但通常把指针变量简称为指针。2.指针变量的赋值指针变量是一个可以存储指针值的变量,在32位系统中它占4个字节,可以把一个变量用&取地址后赋值给这个指针变量,例如

3、:inta=1,*p;p=&a;此时p存储了变量a的地址。注意变量p本身也是一个变量,它自己也有一个存储单元,这个存储单元显然与变量a的存储单元是不同的,变量a的存储单元存储的是变量a的值,而变量p存储单元存储的是变量a单元的地址,如图7-3所示。图7-3变量指针与指针变量指针变量是有类型的,例如:int*p;char*q;则p是一个指向整数变量的指针变量,q是一个指向字符变量的指针变量,在对它们赋值时要注意类型匹配,例如:int*p,a;char*q,c;p=&a;//正确q=&c;//正确p=&c;//错误q=&a;//错误一般要保证变量类型与指针类型一致,不能把一种类型的变量的指针赋值

4、给另外一种不同类型的指针变量。但是由于指针毕竟是一个内存地址,从物理上来说,p与q都是内存地址,在32位系统中都是32位二进制地址值,没有什么本质区别,因此经过转化后还是可以交叉赋值的,通过指针的类型转换可以实现下列赋值:p=(int*)&c;//&c是char*指针,(int*)转化后成为int*类型指针q=(char*)&a;//&a是int*指针,(char*)转化后成为char*类型指针一般指针变量类型的转换可以通过下面方式完成:(数据类型*)指针另外数组变量也可以取指针,例如:inta[5],*p;p=&a[0];//p指向a[0]变量p=&a[4];//p指向a[4]变量关于数组

5、与指针的关系在后面章节中再进一步讲解。3.通过指针访问变量既然指针变量指向一个变量,因此通过指针变量也就知道变量的位置,知道位置也就能访问到变量,可以通过指针变量存取变量的值。C中规定通过:*指针变量来访问对应变量的值,例如:inta=1,b,*p;p=&a;*p=2;//设置p指向的变量的值为2,既a=2b=*p;//把p指向的变量的值赋予b,既b=2在C语言中,系统对“*指针变量”的解释是根据指针变量的类型计算出对应变量所占字节数,之后把指针变量所指的连续的几个字节的二进制数据看成是与指针变量同类型的数据并存取这一数据。7.2指针与函数参数7.2.1指针作为函数参数指针变量与普通变量一样

6、也可以作为函数参数来传递,实际参数是一个变量的指针,该变量的指针传递到函数的形式参数指针变量,这样形式参数的指针变量仍然指向实际参数,换句话说就是在函数中可以访问主函数的实际参数。但要注意函数如返回一个指针,则这个指针指向的变量必须有效,不能返回一个函数局部变量的指针,这个指针是无意义的,因为函数的局部变量在函数退出时已经销毁了。7.2.2值传递与地址传递在前面章节中曾经介绍过当变量作为函数参数时,它是函数的一个局部变量,它在函数内的改变不会影响到主函数的对应实参数变量。但如把指针变量作为函数参数来传递情况有不同,通过该指针变量去改变对应变量的值会影响到主函数对应的变量。例7_5:值传递与地

7、址传递规则。#includevoidfun(int*p,intb){printf("fun中:p=%p*p=%d&b=%pb=%d",p,*p,&b,b);*p=100;b=100;}voidmain(){inta=1,b=2,*p;p=&a;printf("调用前:p=%pa=%d&b=%pb=%d",p,a,&b,b);fun(p,b);printf("调用前:p=%pa=%d&

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。