资源描述:
《最新C语言6教学提纲.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算机程序设计(C语言)第6章指针1.指针的概念及计算2.指针和数组3.指针与字符串4.指针的应用1指针的概念计算机内存单元编号—地址地址编号范围内存地址编号和变量地址例:语句intx=3,y;内存地址内存单元中的值变量名………10003x1004值未知y………6.1指针基础变量的访问方式:直接访问:通过变量名直接存、取变量的内容。例如:printf(“%d”,x)间接访问:通过变量的地址存、取变量的内容。例如:p=&x;printf(“%d”,*p);6.1指针基础3x1000变量名地址变量值1000p指针名指针的值180
2、0地址指针:是把内存地址作为其值的变量。2指针变量的定义类型*指针变量名;例:intx=3,*p;p=&x;/*&运算符称作取地址运算符*/内存地址内存单元中的值变量名………10003x18001000p………6.1指针基础6.1指针基础指针变量的定义说明:指针变量也是变量,命名规则同变量的命名;指针变量具有类型,其含义表示只能存放同类型变量的地址;指针变量在使用时,一定要初始化或者让其指向某个具体的存储单元,否则可能产生内存读取错误。例:int*p;定义指向int类型的变量的指针char*cp;定义指向char类型的变量的
3、指针double*dp;定义指向double类型的变量的指针3指针的基本运算(1)取地址运算单目运算符&用于获得变量的地址;6.1指针基础例:int*p,*q,n,*p1,a[3];p=&n;q=p;p1=&a[1];pqp1a[0]a[1]a[2]n6.1指针基础(2)间接访问运算间接运算符*得到被指针所指的变量。通常有两种使用方式:间接读取变量中的数据printf(“%d”,*p);等价于printf(“%d”,n);m=*p+*q;间接赋值:*p=10;等价于n=10;注意:此处的*与指针定义时的*含义不同int*p;
4、*表示后面的变量名表示一个指针变量#includeintmain(){inta=3,*ap;ap=&a;printf(“a=%d,*ap=%d”,a,*ap);*ap=10;printf(“a=%d,*ap=%d”,a,*ap);scanf(“%d”,&a);printf(“a=%d,*ap=%d”,a,*ap);(*ap)++;printf(“a=%d,*ap=%d”,a,*ap);return0;}运行结果:a=3,*ap=3a=10,*ap=105(输入并按回车键)a=5,*ap=5a
5、=6,*ap=66.1指针基础intmain(){int*p1,*p2,*tp,a,b;scanf(“%d,%d”,&a,&b);p1=&a;p2=&b;if(a
6、(*p1<*p2){temp=*p1;*p1=*p2;*p2=temp;}printf(“a=%d,b=%d”,a,b);printf(“max=%d,min=%d”,*p1,*p2);return0;}6.1指针基础输入:5,9a=9,b=5max=9,min=56.1指针基础(3)指针的自加自减运算指针自加减运算表示指针变量的值加减该类型存储单元空间的大小,指向下(上)一个同类型的存储单元。如:intx,y,*p;p=&x;p++;内存地址内存单元中的值变量名………10003x1004值未知y………(4)&和*运算符高于
7、一般运算符,低于自加自减运算符。*p++;等价于*(p++)*--p;等价于*(--p)(*p)++;--(*p);例如:inta[3]={1,3,5},*p;p=&a[0];printf(“%d”,*p++);--(*p);printf(“%d,%d,%d”,a[0],a[1],a[2]);6.1指针基础p135a[0]a[1]a[2]11,2,56.1指针基础(5)指针的比较与算术运算p==q表示指针p和指针q是否指向同一个变量或两个指针是否同时为NULL(空指针,表示不指向任何地址单元)。pq;p>=q;
8、p<=q;p!=NULL等均表示地址的比较p=p+2;p=q-2;p-q4指针变量的初始化和赋值指针变量在定义时,就被赋于某个同类型变量的值,称为指针初始化;指针变量由于是对某个地址单元的内容进行操作,因此,在使用前,一定要指向某个具体的地址单元,否则,会出现错误,甚至导致系统错误。6.1