资源描述:
《C语言第十四讲.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言电子教案(十四)第十四讲第十章指针主要内容:§10.1地址和指针的概念§10.2变量的指针和指向变量的指针变量§10.3数组的指针和指向数组的指针变量(一维)1§10.1地址和指针的概念指针是C语言中的一个重要概念,是C语言的最大特点,同时也是学习的难点。正确灵活地使用指针,可以有效地表示复杂数据,有效地利用内存,方便地使用字符串和函数,在调用函数时可以得到两个或两个以上的值。掌握指针的概念后,对C语言中各种函数(特别是字符串处理函数)的使用,才能有深刻而本质性的理解。C语言中程序运行的一些现象,才能有一个圆满的解释。2一、数据在内存中的存
2、储地址:内存中的每个存储单元(字节)都有编号,这个编号就叫做“地址”2000200120022003200420052006200720082009定义变量用户要使用变量,首先要进行定义,定义变量时需要确定变量的类型和变量名。系统对变量定义的操作是,为变量分配存储单元,并记录变量名与存储单元地址之间的对应关系。如:inti,j,k;ijki=3,j=6,k=9;3693一、数据在内存中的存储2000200120022003200420052006200720082009ijk369注意以下概念:变量名:供用户使用,如i,j,k。变量的存储单元地址
3、:供系统使用,如:2000,2002,2004。存储单元的内容:程序运行中为各变量或地址进行赋值操作后,存储单元中所存放的数据,如3,6,9等。4二、几个基本概念地址:内存中的每个存储单元(字节)都有编号,这个编号就叫做“地址”内容:程序运行中为各变量或地址进行赋值操作后,存储单元中所存放的数据指针:变量的地址叫指针。指针变量:用来存放地址的变量。定义方法为:类型标识符*变量名;指向:通过地址建立起来的一种联系。如:inti,*p;p=&i;第一个语句定义了整型变量i和指向整型数据的指针变量p第二个语句中将变量i的地址赋给了指针变量p。这样,
4、就可以说指针变量p指向了整型变量i。5三、对变量的访问方式直接访问:直接通过变量的地址或变量名(系统会自动将变量名转换成变量的地址)进行访问,如:scanf(“%d”,&a);或:a=78;a2000786三、对变量的访问方式间接访问:将变量的地址存放在一个指针变量中,通过指针变量对变量进行访问。inta,*p;ap2000782002200078p=&a;7§10.2变量的指针和指向变量的指针变量本节内容就是掌握变量的指针的概念、指针变量的定义、指针变量的引用、用指针变量作函数的参数。从而在程序设计中,学会使用指针来对变量进行操作,更灵活地使用
5、C语言的函数以及使函数能够带回多个值。8一、变量的指针和指针变量的定义变量的指针:变量的指针就是变量的地址,即是变量在内存存储单元的起始地址。指针变量的定义:指针变量的定义格式为:类型标识符*变量名;如:int*p;2000a20012000定义p为基类型为整型的指针变量,即p中可以存放一个整型数据的地址。9二、三个运算符号取地址运算符号&:用法:&变量名功能:取变量的地址结合性:右(是单目运算符)优先级:仅次于括号类指针(间接访问)运算符号*:用法:*指针变量名功能:对指针变量进行间接访问(取地址中的值)结合性:右(是单目运算符)优先级:仅次
6、于括号类10二、三个运算符号变址运算符号[]:用法:指针变量名或地址[n]功能:使指针移动n个相对移动量,再进行间接访问结合性:左优先级:最高,属于括号类11三、指针变量的引用对指针变量赋值指针变量名=地址;为指针变量所指向的存储单元赋值*指针变量名=表达式;使用指针变量所指向的变量中的数据变量名=*指针变量名;12三、指针变量的引用如果有定义:inta,b,*p;对指针变量赋值p=&a;为指针变量所指向的存储单元赋值*p=78;此处等价于:a=78;此处等价于:b=a+4;使用指针变量所指向的变量中的数据b=*p+4;13三、指针变量的引用结论
7、:如果有定义:inta,*p;且有:p=&a;即指针变量p指向整型变量a则在程序中:*p与a等价。注意事项:在程序中,定义指针变量时的“*”与其它位置出现的“*”含义不同,前者表示p是指针变量,而后者表示对指针变量所指向的存储单元进行间接访问(即取地址中的值)14main(){inta,b,*p1,*p2,*p;scanf(“%d,%d”,&a,&b);printf(“a=%d,b=%d”,a,b);p1=&a;p2=&b;}例1使用指针将两个数按升序排序1abp1p2p200020022000200253这是两个指针变量的值进行交换,而
8、不是两个变量a和b的值进行交换,应输出*p1和*p2if(a>b){p=p1;p1=p2;p2=p;}printf(“min=%d,ma