资源描述:
《c语言 (谭浩强)第6章指针ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章指针●指针基础●指针与数组●指针与函数6.1指针基础6.1.1指针就是地址1.程序实体的内存地址一个程序一经编译,在其执行过程中,就会为变量、数组以及函数分配存储空间。这些变量、数组、函数都称为程序实体,也具有某一种数据类型。这些被分配了内存空间的程序实体,都具有自己的内存地址。#includeintmain(void){inti1,i2;floatf1,f2;doubled1,d2;printf("数据大小:int,%d;float,%d;double,%d",siz
2、eof(i1),sizeof(f1),sizeof(d1));/*输出类型宽度*/printf("%ld,%ld",&i1,&i2);/*输出变量地址*/printf("%ld,%ld",&f1,&f2);printf("%ld,%ld",&d1,&d2);return0;}解释:(1)变量存储空间的分类顺序:先声明的后分配;撤销的顺序与之相反:先建立的后撤销。这种机制就称为栈机制,好像往一个只能允许进出一个盘子的桶里放盘子,先放进的后拿出。在C语言程序中,局部变量就是被分配在栈区的,
3、并且是以高端为栈底建立的。所以后建的变量的地址小。(2)每个变量只有一个地址,但占用的空间不同。空间的大小因类型而异。同时,数据的存储方式也不同,如实型数据采用浮点存储,而整型数采用定点存储。2.指针的概念从根本上说,目标程序是按照地址访问这些程序实体的。C语言不仅提供了用变量名访问内存数据的能力,还提供了直接使用内存地址访问内存数据的能力。这个内存地址就称为指针。它好像一个指路标指向要访问的内存数据。6.1.2指针变量及其定义1.指针变量的概念变量可以用来存放数值(如整数、实数等),也可以用来存
4、放地址(另一个变量的地址),这种专门用于存储指针(地址)的变量就称为指针变量。2.指针变量的定义在定义指针变量时,需要用指针声明符*表示此变量不是一般的变量,而是用来存放其他变量地址的指针变量。由于每一个变量都是属于一个特定类型的,因此在定义指针变量时,需要声明该变量的类型,以便能通过指针能正确访问特定类型的数据。定义一个指针的语法格式为:基类型标识符*指针变量名;6.1.2指针变量及其定义int*pi1,*pi2;double*pd1,*pd2;说明:(1)“基类型”,就是指针要指向的数据的类型
5、。(2)定义指针变量时,在指针变量名前加符号“*”。“*”称为指针声明符,用于说明它后面的名字是一个指针变量名。例如语句:inti1,i2,*pi1,*pi2;定义了两个数据变量i1和i2,还定义了两个指向int类型的指针pi1和pi2。3.指针变量的初始化和赋值和其他变量一样,指针变量也可以初始化。可以用变量的地址对指针变量进行初始化,但必须注意:该变量的类型必须和指针变量的基类型相同。也可以用一个指针变量的值给另一个指针变量赋值,但它们应该具有相同的基类型。例如:inti1,i2,i3;int
6、*pi1=&i1,*pi2=&i2;pi1=&i3;pi2=pi1;注意,不要将一个变量的值赋给指向它的指针变量。例如pi1=i1;或pi2=i1;都是错误的。应该是将变量的地址赋给指向它的指针变量。如:pi1=&i1;或pi2=&i1;6.1.3指针变量的引用1.引用指针变量当一个指针变量被初始化或被赋值后,它就指向一个特定的变量。这时,就可以使用指针访问它所指向的内存空间。在C语言中使用指针访问它所指向的内存空间的方法是在指针变量名前加一个“*”号。例如inti,*pi;pi=&i;*pi=5
7、;此处的“*”是“指针运算符”。又称为“间接访问运算符”,它作用于指针变量。*pi表示指针变量pi所指向的存储空间,即变量i。*pi相当于变量i。2.使用指针变量需要注意的问题(1)使用指针,首先应当区分指针变量与它所指向的存储单元之间的不同。#includeintmain(void){inti1=10,i2=20,*p,*p1,*p2;p1=&i1;p2=&i2;printf(“i1=%d,*p1=%d;i2=%d,*p2=%d”,i1,*p1,i2,*p2);p=p1;p
8、1=p2;p2=p;printf(“i1=%d,*p1=%d;i2=%d,*p2=%d”,i1,*p1,i2,*p2);}i1&i2i2&i1p1p2交换前指针指向交换后指针指向#includeintmain(void){int*p1,*p2,i1=10,i2=20,i;p1=&i1;p2=&i2;printf(“i1=%d,*p1=%d;i2=%d,*p2=%d”,i1,*p1,i2,*p2);i=*p1;*p1=*p2;*p2=i;printf(“i1