资源描述:
《c程序设计 第10章 指针》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第10章指针主要内容:变量的指针和指向变量的指针变量数组的指针和指向数组的指针变量字符串指针和指向字符串指针变量使用指针的优点:1、能有效地表示复杂的数据结构2、能动态分配内存3、能方便地使用字符串和数组4、在函数调用时能获得一个以上的值5、能直接处理内存地址地址-------------内存字节编号内存单元-------存放数据的基本单位变量名----------标识内存单元指针--变量地址(变量所占内存单元首字节地址)指针变量-------存放变量地址§10.1指针的概念C程序对变量值的存取方式1、“直接访问”方式:按变量名与内存地址的对应关系直接
2、按变量地址存取。2、“间接访问”方式:通过指向变量的指针,对其指向的变量值进行间接存取。10.1地址和指针的概念在编译时就给这个变量分配内存单元图10.210.2变量的指针和指向变量的指针变量变量的指针就是变量的地址。存放变量地址的变量是指针变量,用来指向另一个变量。图10.3一、指针变量的定义类型符*指针变量名;例:float*p1,*p2;int*p3,*p4;二、指针变量的引用1、相关的运算&—取地址运算符*—指针运算符例:&a(a变量的地址)*p(指针变量p所指向的变量)p=&a;pointer_1=&i;*pointer_1的值为i的值poi
3、nter_2=&j;*pointer_2的值为j的值在定义指针变量时要注意:指针变量前面的“*”,表示该变量的类型为指针型变量。在定义指针变量时必须指定基类型。只能取已经分配了内存变量的地址赋给指针变量指针使用前必须有合法的地址值。int*p;*p=20;例10.1通过指针变量访问整型变量。main(){inta,B;int*pointer-1,*pointer-2;a=100;B=10;pointer-1=&a;/*把变量a的地址赋给pointer-1*/pointer-2=&B;/*把变量B的地址赋给pointer-2*/printf("%D,%
4、D",a,B);printf("%D,%D",*pointer-1,*pointer-2);}图10.5图10.6例10.2整数,按先大后小的顺序输出a和B。main(){int*p1,*p2,*p,a,B;scanf("%D,%D",&a,&B);p1=&a;p2=&B;if(a<B){p=p1;p1=p2;p2=p;}/*同类型指针*/printf("a=%D,B=%D",a,B);printf("max=%D,min=%D",*p1,*p2);}2、指针与算术运算px+n等价于(p)+n*sizeof(数据类型)px-n等
5、价于(p)-n*sizeof(数据类型)&、*与++、--运算同级同级运算从右到左例:*p++等价于*(p++),即*p,p++;若:p=&a;则:(*p)++等价于a++&*p等价于&a*&a等价于a10.2.3指针变量作为函数参数共享内存,“双向”传递swap(int*p1,int*p2){inttemp;temp=*p1;*p1=*p2;*p2=temp;}main(){inta,B;int*pointer-1,*pointer-2;scanf("%D,%D",&a,&B);pointer-1=&a;pointer-2=&B;if(a<B) sw
6、ap(pointer-1,pointer-2);printf("%D,%D",a,B);}如果想通过函数调用得到n个要改变的值:①在主调函数中设n个变量,用n个指针变量指向它们;②然后将指针变量作实参,将这n个变量的地址传给所调用的函数的形参;③通过形参指针变量,改变该n个变量值;④主调函数中就可以使用这些改变了值的变量。#includevoidfunction(inta,intb,int*c,int*d){*c=a+b;*d=2*a+b;}main(){intx,y,z,t;scanf("%d,%d",&x,&y);func
7、tion(x,y,&z,&t);printf("z=%dt=%d",z,t);}主子程序之间数据传递的方式:1.实参----形参的值传递;return语句。2.全局变量。3.形参为指针。4.函数参数(形参或实参)为数组名或指针。10.3数组的指针和指向数组的指针变量指针变量可以指向数组和数组元素(把数组起始地址或某一元素的地址放到一个指针变量中)。所谓数组的指针是指数组的起始地址,数组元素的指针是数组元素的地址。引用数组元素可以用下标法(如a[3]),也可以用指针法,即通过指向数组元素的指针找到所需的元素。数组的指针:int*p,a[10];p=a
8、;数组首地址数组第一个元素的地址(指针)注意:数组名代表数组首地址(是常量)数组元素的指针:p