C语言指针全解.ppt

  1. 1、本文档共91页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言指针全解

变量的访问方式 直接访问:按变量地址存取变量值 间接访问:通过存放变量地址的变量去访问变量 10.2 变量的指针和指向变量的指针变量 指针变量与其所指向的变量之间的关系 与*运算符 含义 【例10.5】 输出数组中的全部元素。 假设有一个a数组,整型,有10个元素。要输出各元素的值有三种方法。 第一种方法:下标法 对二维数组 int a[3][4],有 a-----二维数组的首地址,即第0行的首地址 a+i-----第i行的首地址 a[i] ? *(a+i)------第i行第0列的元素地址 a[i]+j ? *(a+i)+j -----第i行第j列的元素地址 *(a[i]+j) ? *(*(a+i)+j) ? a[i][j] 10.6 返回指针值的函数 函数定义形式: 类型标识符 *函数名(参数表); 例 int *f(int x, int y) 10.7.2 指向指针的指针 定义: 指向指针的指针 一级指针:指针变量中存放目标变量的地址 作业 10.1 10.2 10.3 10.7 10.9 10.5 函数的指针和指向函数的指针变量 函数指针:函数在编译时被分配的入口地址,用函数名表示 指向函数的指针变量 定义形式: 数据类型 (*指针变量名)( ); 如 int (*p)( ); max …... 指令1 指令2 函数返回值的数据类型 专门存放函数入口地址 可指向返回值类型相同的不同函数 函数指针变量指向的函数必须有函数说明 ( )不能省 int (*p)() 与 int *p()不同 函数指针变量赋值:如p=max; 函数调用形式: c=max(a,b); ? c=(*p)(a,b); 对函数指针变量p?n, p++, p--无意义 目的:用一个指针变量指向函数,通过它调用此函数。 【例10.23】求a和b中的大者。(方法一:普通函数方法) main() { int max(int ,int); int a,b,c; scanf(%d,%d,a,b); c= max(a,b); printf(a=%d,b=%d,max=%d\n,a,b,c); } int max(int x,int y) { int z; if(xy) z=x; else z=y; return(z); } scanf(%d,%d,x,y); 求a和b中的大者。(方法二:函数指针法) main() { int max(int ,int), (*p)(); int a,b,c; p=max; scanf(%d,%d,a,b); c=(*p)(a,b); printf(a=%d,b=%d,max=%d\n,a,b,c); } int max(int x,int y) { int z; if(xy) z=x; else z=y; return(z); } max …... 指令1 指令2 main 3A00 p 3A00 注: int (*p)()定义p是一个指向函数的指针变量,此函数带回整型的返回值.? 说明: 1、函数的调用可以通过函数名调用,也可以通过函数指针调用。 2、int (*p)() ;表示定义一个指向函数的指针变量,它不是固定指向哪一个函数的,而只是表示定义了这样一个类型的变量,它是专门用来存放函数的入口地址的。 int *p();表示定义一个函数,这个函数的返回值是指向整型变量的指针。 3、在给函数指针变量赋值时,只需给出函数名而不必给出参数,如:p=max; 。 4、用函数指针变量调用函数时,只需将(*p)代替函数名即可(p为指针变量名),在(*p)之后的括号中根据需要写上实参。如:c=(*p)(a,b); 5、对指向函数的指针变量,像p+n、p++、p--等运算是无意义的。 10.5.2 用指向函数的指针作函数参数 函数的参数可以是变量、指向变量的指针变量、数组名、指向数组的指针变量等。指向函数的指针也可以作为参数,以便实现函数地址的传递,也就是将函数名传给形参。 它的原理如下:有一个函数(假设函数为sub),它有两个形参(x1和x2),定义x1和x2为指向函数的指针变量。在调用函数sub时,实参用两个函数名f1和f2给形参传递函数地址。这样在函数sub中就可以调用f1和f2函数了。 一般的使用形式: : sub( f1, f2); /* 主调函数/* :

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档