c语言中指针用法.ppt
上传人:可爱****乐多 上传时间:2024-09-09 格式:PPT 页数:82 大小:2.4MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

c语言中指针用法.ppt

c语言中指针用法.ppt

预览

免费试读已结束,剩余 72 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第六章指针重点:6.1指针的概念int*point1,a=123,b=567;doublepoint2[20];……point1=&a;注意:指针中的内容是可以动态改变的,例如point1原来指向变量a,当执行了point1=&b操作后,即指向变量b:2.指针的作用(4)在函数之间进行数据的双向传递。指针类型用来定义各种类型的指针变量,例如整型指针、字符指针等等。其语法如下:6.2声明指针变量2.指针变量的作用域上面的语句定义了四个变量:4.指针变量的初始化上面的说明语句在声明指针变量iptr的同时即赋予初值,其初值是i的地址。(2)指针变量可以和其它变量在同一语句中声明。6.3指针运算2.指针的加减运算3)对数组名施加+,-运算4)指针变量的++、--运算3.取地址运算分析:4.间接访问2)作用:(3)关于“*”的说明5.指针应用实例程序的几点说明:6.4指针与数组2.通过指针间接访问数组元素程序1voidmain(){inta[10];inti;for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++)printf("%d",a[i]);}程序2voidmain(){inta[10];inti;for(i=0;i<10;i++)scanf("%d",(a+i));for(i=0;i<10;i++)printf("%d",*(a+i));}程序3voidmain(){inta[10];inti,*p;for(i=0;i<10;i++)scanf("%d",(a+i));for(p=a;p<(a+10);p++)printf("%d",*p);}结论:上面的三个程序执行结果是相同的。#include<iostream.h>#include<string.h>voidRightString(char*,char*,int);voidmain(){chars1[100],s2[100];intn1;cin>>s1>>n1;RightString(s1,s2,n1);cout<<"s1="<<s1<<"s2="<<s2<<endl;};voidRightString(char*s1,char*s2,intn){char*p;p=s1+n-1;strcpy(s2,p);}试问,如果没有引入p指针,本问题应如何解决?3.指针数组可以看出:name[0]本身是一个字符指针,它存放的是"Lin"的首地址,实际上可以认为name[0]指向一个一维字符数组,name[1]同样也指向一个一维字符数组……,所以字符指针数组和二维字符数组有相似之处。(2)指向指针的指针分析:例6-12下面的程序将字符指针数组传递给函数,也即传递二级指针给函数。分析:6.5指针与函数1.函数的指针类型参数(3)函数的执行部分对指针形参进行间接访问。(1)可读性问题:因为对数据对象的间接访问比直接访问相对难以理解。2.指针函数3.函数指针(2)声明函数指针(2)用函数指针调用函数#include<iostream.h>intfn1(int);voidmain(){intx,y;int(*fp1)(int);x=1;fp1=fn1;y=fp1(x);}intfn1(intx){cout<<x*5;return(x*5);}(3)函数指针用作函数参数6.6堆内存管理(2)函数中包含太多的数组,一旦该函数被调用,就必须占据大量的栈空间。通常这些数组并不是同时使用的,这同样造成太大的浪费。1.堆内存2.申请堆内存函数的返回值为一个具有n个元素的数组分配内存空间,每个元素的长度为size字节。例6-14将例6-9的s1和s2两个字符数组改成通过字符指针动态申请空间。cin>>s1>>n1;len=strlen(s1);//获取s1的实际长度cout<<"len="<<len;if((s2=(char*)calloc(len-n1+2,sizeof(char)))==NULL)//len-n1+2是s2的实际长度{cout<<"申请不到内存空间";free(s1);exit(-1);}RightString(s1,s2,n1);cout<<"s1="<<s1<<"s2="<<s2<<endl;free(s1);free(s2);};2)malloc函数解释:(2)功能例6-15下面的程序在堆内存中动态地建立整型数组array所需的空间,给每一个元素赋值并输出。分析:3)new操作符例如:newchar[100],申请能存放100个字符的内存空间,等同于建立一