欢迎来到天天文库
浏览记录
ID:55652163
大小:859.25 KB
页数:55页
时间:2020-05-22
《C语言程序设计 第7章指针.pptx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第7章指针C语言程序设计指针是C语言中一种重要的数据类型,是C语言的精华,灵活地运用指针可以处理各种复杂的数据结构,从而编出精练而高效的应用程序。7.1指针的概念1.指针的定义在计算机中,所有的数据都是存放在存储器中。一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占4个单元,字符量占1个单元等,为了正确地访问这些内存单元,必须为每个内存单元编上号。根据一个内存单元的编号即可准确地找到该内存单元,内存单元的编号也叫做地址,通常把这个地址也称为指针。内存单元的指针和内存单元的内容是两个不同的概念。对于一个内存单元来说,单元的地址即为指针,其
2、中存放的数据才是该单元的内容。指针是一种数据类型,它是用来专门存放所指对象地址的变量,即数据值是存放在指针所指的对象中,而不是在指针变量中。2.指针变量的定义指针变量定义的一般形式如下:类型说明符*变量名;其中,*表示指针变量,变量名即为定义的指针变量名,类型说明符表示指针变量所指对象的数据类型。如“int*p1;”表示p1是指向某一整型变量的指针变量,它的值是某个整型变量的地址,如图7-1-1所示。7.1指针的概念例如:float*p2;/*p2是指向实型变量的指针变量*/char*p3;/*p3是指向字符变量的指针变量*/注意:一个指针变量只能指向同类型的变量,如p2只能指
3、向实型变量,不能时而指向一个实型变量,时而又指向一个字符变量。7.1指针的概念3.指针变量的引用指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值。未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机。C语言中提供了运算符“*”和取地址运算符“&”操作。(1)运算符*运算符“*”是求指针变量所指向的变量的值。如“*p”表示指针p所指向地址的内容。(2)地址运算符&地址运算符“&”可取得一个变量的地址,其一般形式如下:&变量名;7.1指针的概念设有指向整型变量的指针变量p,如要把整型变量a的地址赋予p,可采用以下两种方式:①指针变量初始化的方法inta;in
4、t*p=&a;②赋值语句的方法inta;int*p;p=&a;7.1指针的概念注意:①被赋值的指针变量前不能再加“*”,如写为“*p=&a;”是错误的。②不允许把一个数赋予指针变量,故下面的赋值是错误的:int*p;p=1000;7.1指针的概念【例7.1.1】运用指针输出变量的值。7.1指针的概念程序运行结果:3242【分析】①定义整型变量a。②定义一个指向a的指针p。③从键盘输入一个数送到p指向的地址。④将a的值加10。⑤输出指针p所指向的地址中的内容。7.1指针的概念4.指针变量作为函数参数函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变
5、量的地址传送到另一个函数中。【例7.1.2】输入a、b、c三个数,按从小到大的顺序输出。7.1指针的概念7.1指针的概念程序运行结果如下:9575,7,9【分析】运用冒泡排序法,两两依次相比较,将小数放在前面,大数放在后面,比较三次得到结果。本程序中定义了指针变量,变量互换时不再借助于第三个变量,而是利用指针指向不同的变量来实现变量的互换。流程图如图7-1-2所示。7.1指针的概念7.1指针的概念一个数组是由连续的一块内存单元组成的。数组名就是这块连续内存单元的首地址。一个数组也是由各个数组元素(下标变量)组成的。每个数组元素按其类型不同占有几个连续的内存单元。一个数组元素的首
6、地址是指它所占有的几个内存单元的首地址。一个指针变量既可以指向一个数组,也可以指向一个数组元素,可把数组名或第一个元素的地址赋予它。1.指针变量处理一维数组引入指针变量后,可以采用“a[i]”形式和指针法,即采用“*(pa+i)”形式访问数组元素。两种方法的区别如图7-2-1所示。7.2指针与数组如要使指针变量指向第i号元素,可以把i元素的首地址赋予它或把数组名加i赋予它。inta[10];int*p;p=&a[5];/*把数组元素a[5]的地址赋给指针变量p*/7.2指针与数组【例7.2.1】运用指针法访问数组元素。7.2指针与数组程序运行结果:a[0]=0a[1]=1a[2
7、]=2a[3]=3a[4]=4【分析】①先用一个循环语句将数组a的5个元素分别赋值为0~4。②再用一个循环语句将数组a的5个元素分别输出。③两个循环中访问数组均使用指针法。7.2指针与数组7.2指针与数组程序运行结果:a[0]=0a[1]=1a[2]=2a[3]=3a[4]=4【分析】用一个循环实现数组元素的赋值和输出,其中“*pa++”是指先将指针pa所指向的存储单元的内容读出,再将指针pa后移,指向下一个数组元素。7.2指针与数组2.用数组名作函数参数可用数组名和数组指针变量作函数参数。
此文档下载收益归作者所有