- 1、本文档共67页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机软件及应用]第09章指针
第 9 章 指 针 第一节 指针及其引用 第二节 指针与函数 第三节 数组与指针 第四节 指针与字符串 第五节 指针数组 第六节 多级指针 变量的3个属性: – 变量名:编程时使用(进行编程) – 变量值:程序运行时使用(进行运算) – 变量地址:程序运行时,要将变量的值保存在计算机的存储单元中,每个存储单元都有唯一的内存地址。变量在内存中占据的存储单元的地址就是变量的地址。 指针:变量的地址 指针变量:保存变量地址的变量 指针变量只能存放地址,不能将一个整型量或其他任何非地址类型的数据赋给一个指针变量。 int * p ; p=0x1000 ; §10.2 指针和函数 1 指针变量作为函数参数 函数的参数可以是指针类型,它的作用是将实参变量的地址传递给函数的形参。实参变量和形参变量共用同一段内存地址单元。 通过函数调用得到n个要改变的值其方法如下: ①在主调函数中声明n个变量,用n个指针变量指向他们; ②将指针变量作为实参,将这n个变量的地址传给所调用函数的形参; ③通过形参指针变量,改变该n个变量的值 ④由于实参变量和形参变量共用同一段内存地址单元。主调函数中的相应变量的值也得到改变。 main( ) { int a=5,b=10; swap(a,b); printf(“a=%d,b=%d”,a,b); } swap(int *px,int *py) { int temp; temp=*px; *px=*py; *py=temp; } 函数的返回值可以时指针,其说明的一般形式为: 数据类型 * 函数名(参数列表) { …… } main ( ) { int a=5, b=10 , * pmax ; int * max ( int * , int * ) ; pmax = max ( a , b ) ; printf ( “max=%d” , * pmax ) ; } int * max( int *pa , int * pb) { int * p ; p = *pa *pb ? pa : pb ; return p ; } 3 指向函数的指针 在定义一个函数之后,编译系统为每个函数确定一个入口地址,当调用该函数时,系统会从这个“入口地址”开始执行该函数。存放函数入口地址的变量就是一个指向函数的指针。 指向函数的指针变量的一般定义形式为: 数据类型 (* 指针变量名)( ); 其中数据类型是指函数返回值的类型。 指向函数的指针必须赋初值,才能指向具体的函数。C语言规定函数名代表该函数的入口地址,可以直接用函数名为函数指针变量赋值,即: 函数指针变量名=函数名 ; 函数指针经定义和赋值后,在程序中就可以通过该指针变量调用此函数。 例:用指针调用函数,实现从两个数中输出较大者 main() { int max( int , int ) ; int (*pf) ( ) ; pf=max ; int a=5 , b=10 , c ; c=( *pf )(a , b) ; printf( “max=%d” , c ) ; } max( int x , int y ) { return ( xy ) ? x : y ; } 1 函数的调用可以通过函数指针调用,其调用形式为将指针(*p)代替函数名即可,在(*p)后面的括号中根据需要写上实参。 2(*p)()表示定义一个指向函数的指针变量,它不是固定指向哪一个函数的,而只是表示定义了一个类型的变量,它是专门用来存放函数的入口地址的。在程序中把哪一个函数的地址赋给它,它就指向哪一个函数。在一个程序中,一个指针变量可以先后指向不同的函数。 3 在给函数指针变量赋值时,只需给出函数名而不必给出参数,如: p=max; 4 对于指向函数的指针变量做加减运算是无意义的,如:p+n , p++等。 §10.3 数组与指针 数组与指针的关系: 数组中的每个元素都可以通过下标唯一确定,即通过下标可以访问(操作)数组中的元素,称为下标方式。 在C语言中,凡是可以通过数组下标方式完成的访问(操作)均可以通过指针方式实现。称为指针方式。 如果指针p的初值为a[0],则: 1. p+i和a+i就是a[i]的地址。 2. * ( p + i ) 或 *
文档评论(0)