- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C第9章指针g讲义
第九章 指针 本章教学目的: 理解指针的概念,掌握指针在数组、字符串、函数等方面的应用。 本章教学重点: 数组的指针、字符串的指针、函数的指针、指针数组。 本章教学难点: 两维数组的指针、指针数组。 本章作业: 150页9.1中1,3,5,9.2中1,3,5,7,9 void exchange(int *pointer1, int *pointer2) { int temp; temp=*pointer1; *pointer1=*pointer2; *pointer2=temp; } main() { int num1,num2; int *num1_p=num1, *num2_p=num2; printf(“Input the first number: ”); scanf(“%d”, num1_p); printf(“Input the second number: ”);scanf(“%d”, num2_p); printf(“num1=%d, num2=%d\n”, num1, num2); if( *num1_p *num2_p ) /* 即num1num2)*/ exchange(num1_p, num2_p); /*指针变量作实参*/ /*输出排序后的num1和num2的值*/ printf(“min=%d, max=%d\n”, num1, num2); } 注意:不能用如下形式: void exchange(int *pointer1, int *pointer2) { int *temp; *temp=*pointer1;*pointer1=*pointer2;*pointer2=*temp; } 又如: void exchange(int x, int y) { int temp; temp=x;x=y;y=t; } 形参指针变量pointer1(指向变量num1)和pointer2(指向变量num2),在函数调用开始时才分配存储空间,函数调用结束后立即被释放。 虽然被调用函数不能改变实参指针变量的值,但可以改变它们所指向的变量的值。 总结:为了利用被调用函数改变的变量值,应该使用指针(或指针变量)作函数实参,在函数执行过程中使指针变量所指向的变量的值发生变化,函数调用结束后,这些变量的值的变化依然保留下来,实现了“通过调用函数使变量的值发生变化,在主调函数中使用这些改变的值”的目的。 其机制为:在执行被调用函数时,使形参指针变量所指向的变量的值发生变化;函数调用结束后,通过不变的实参指针(或实参指针变量)将变化的值保留下来。 通过函数调用得到n个要改变的值: 在主调函数中设n个变量,用n个指针变量指向它们 将指针变量作为实参,将这n个变量的地址传给所调用函数的形参, 通过形参指针变量,改变n个变量的值 主调函数中就可以使用这些改变了值的变量 注意:不能企图通过改变形参指针的值而使指针实参的值改变 swap(int *p1,int *p2) { int *p; p=p1;p1=p2; p2=p;} main() { int a,b; int *pointer_1,*pointer_2; scanf(%d,%d,a,b); pointer_1=a; pointer_2=b; if(ab) swap(pointer_1,pointer_2); printf(\n%d,%d\n,*pointer_1,*pointer_2);} [案例] 输入3个整数,按降序(从大到小的顺序)输出。要求使用变量的指针作函数调用的实参来实现。 swap(int *pt1,int *pt2) {int temp; temp=*pt1, *pt1=*pt2, *pt2=temp;} void exchange(int *q1, int *q2,int *q3) { if (*q1*q2) swap(q1,q2); if (*q1*q3) swap(q1,q3); if (*q2*q2) swap(q2,q3); } main() { int num1,num2,num3,*p1,*p
文档评论(0)