语言-课件第八章指针_第1页
语言-课件第八章指针_第2页
语言-课件第八章指针_第3页
语言-课件第八章指针_第4页
语言-课件第八章指针_第5页
免费预览已结束,剩余19页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习内容指针的基本概念指针与数组指针与函数程序举例2第八章指针上节课内容回顾指针是变量的地址,指针变量是存放指针(变量地址)的变量指针变量赋值的方法(变量地址;相同类型的指针变量)指针变量必须先赋值,再指针运算符&——求址运算符(……的地址)*——指针运算符(……地址中的内容)3&与*操作符&用来取变量的地址int

i,

*p;p

=&i;int

*p,

a[10];p

=a;int

*p,

a[10];p

=&a[5];*用来取指针指向地址的内容int

i,

*p;p

=&i;*p

=

0;int

*p,

a[10];p

=a;*p

=

0;int

*p,

a[10];p

=&a[5];*p

=

0;45int

a

=3,

*p;p=&a;

(p指向整型变量a)printf(“%d\n”,*p);

(*p表示p所指向的地址中的数据,即a)b=*p;(*p与a相同)*p=100;(将100存到指针p所指向的变量中,即赋值给a)举例:main(){int

a,b;int

*pointer1,*pointer2;a=100;b=10;pointer1=&a;pointer2=&b;printf(“%d,%d\n”,a,b);printf(“%d,%d\n”,*pointer1,*poin}20002002200420062008abpointer1pointer261001020002002ter2);结果:100,10100,10使用指针变量的例子例:通过指针变量整型变量。

解题思路:先定义2个整型变量,再定义2个指针变量,分别指向这两个整型变量,通过访问指针变量,可以找到它们所指向的变量,从而得到这些变量的值。7#include

<stdio.h>int

main(){

int

a=100,b=10;pointer_1=&a;pointer_2=&b;return

0;}定义两个指针变量int

*pointer_1,

*pointer

2;使pointer 1指向a使pointer_2指向bprintf(“a=%d,b=%d\n”,a,b);

直接输出变printf(“*pointer_1=%d,*pointer_2

量a和b的值%d\n”,*pointer_1,*pointer_2);间接输出变量a和b的值8#include

<stdio.h>int

main(){

int

a=100,b=10;}此处*与类型名在一起。此时共同定义指针变量int

*pointer_1,

*pointer_2;pointer_1=&a;pointer_2=&b;printf(“a=%d,b=%d\n”,a,b);printf(“*pointer_1=%d,*pointer_2=%d\n”,*pointer_1,*pointer_2);return

0;此处*与指针变量一起使用。此时代表指针变量所指向的变量9指针变量与其它类型变量的对比共性在内存中占据一定大小的 单元先定义,后使用特殊性它的内容只能是地址,而不能是数据必须初始化后才能使用,否则指向不确定的 单元只能指向同一基类型的变量可参与的运算:加、减一个整数,自增、自减、关系、赋值10118.1.3

指针的运算规则*、&优先级相同,且右结合,与++、--、!单目运算符优先级相同,高于算术运算符int

a=2;int

*p=&a;int

*q=&a;*q++=*(q++)++表示取q所指向的内容,然后q地址值(*p)++

表示变量值++具有等价关系的例子写出下列各表达式的结果,int

a=5,*p=&a;&*p

*&a

(*p)++

&aa

*p++

*(p++)

a++*p与a

相同(地址)&*p

&5

&a*&a

*p

5=a

(变量)(*p)++≡a++

,将p

所指向的变量值加1*p++≡*(p++),先取*p,然后p自加,此时p不再指向a学生练习12指针的关系运算指针的关系运算即比较指针(地址)大小的运算if(p<q)printf(“p在内存中q的if(p==q)printf(“p与q指向同一。\n”);单元。\n”);if(p=='\0‘)printf(“p指向NULL。\n”);13【例8-2】输入两个整数i1和i2,利用指针将大数存放到i1中,小数存放到i2中,最后按i1、i2的顺序输出。按题意,定义两个指针变量p1、p2,将i1、i2的地址分别存入p1、p2,当i1<i2时利用指针变量p1、p2交换i1、i2的值然后输出14#include<stdio.h>main(){

int

i1,

i2,

*p1,

*p2,

t;p1=&i1;

p2=&i2;printf("Entertwo

numbers:\n");scanf("%d%d",p1,p2);/*

利用指针变量输入i1、i2的值*/if(i1<i2){t=*p1;*p1=*p2;*p2=t;}/*利用指针变量的指向操作交换i1、i2的值*/printf("i1=%d,i2=%d\n",i1,

i2);}15main(){int

i1,

i2,

*p1,

*p2,

*p;p1=&i1;

p2=&i2;printf("Enter

two

numbers:\n");scanf("%d%d",p1,p2);if(i1<i2){p=p1;

p1=p2;

p2=p;}printf("i1=%d,i2=%d\n",i1,

i2);}printf(“max=%d,min=%d\n”,*p1,*p2);16交换指针不能交换i1,i2的值17main(){int

i1,

i2,

*p1,

*p2,

*p;p1=&i1;

p2=&i2;printf("Entertwo

numbers:\n");scanf("%d%d",p1,p2);if(i1<i2){*p=*p1;

*p1=*p2;

*p2=*p;}printf("i1=%d,i2=%d\n",i1,

i2);}指针变量p没有存放普通变量的地址,指向是随机的188.1.4指针作为函数参数指针既然是数据类型,自然可以做函数的参数指针做参数的经典例子:两数的互换19void

Swap(int

*x,int

*y){int

temp;temp

=

*x;*x

=

*y;*y

=

temp;}main(){int

a,

b;a

=

15;b

=

8;Swap(

&a,

&b

);printf("a=%d,b=%d",a,b);}void

Swap(int

x,int

y{inttemp;temp

=

x;x=y;y=temp;}main(){int

a,

b;a

=

15;b

=

8;Swap(a,

b);printf("a=%d,b=%d",a,b);}程序1程序2编写函数实现两数的互换主调函数被调函数实参形参结果有何不同?主调函数被调函数main(){int

a,

b;a

=

15;b

=

8;Swap(a,

b);printf("a=%d,b=%d",a,b);}void

Swap(int

x,

int

y){int

temp;temp

=

x;x

=

y;y

=

temp;}1515ab实参形参88程序1xyab20xy被调函数main(){int

a,

b;a

=

15;b

=

8;Swap(&a,

&b);printf("a=%d,b=%d",a,b);}void

Swap(int

*x,

int

*y){int

temp;temp

=

*x;*x

=

*y;*y

=

temp;}&a&a实参形参&b&b程序2主调函数xyab21xy15a

b822【例8-4】int ast(int

x,

int

y,

int

*cp,

int

*dp){*cp=x+y;

*dp=x-y;}main(){int a=4,

b=3,

c,

d;ast(a,

b,

&c,

&d);printf("c=%d,

d=%d\n",

c,

d);}分析以下程序的运行结果23【课堂小结】指针的运算指针作为函数参数【学生实验】实验十一、指针的基本操作【预习内容】指针与数组24实验十一、指针的基本操作void

swap(int

*p1,int

*p2){ int

t;t=*p1;

*p1=*p2;

*p2=t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论