- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第九章 指针 指针的引入…… #include stdio.h void exchange1(int x, int y) { int temp; temp=x; x=y; y=temp; } void main() { int a=18,b=30; exchange1(a,b); printf(a=%d,b=%d\n,a,b); } 1 内存数据的访问方式 数据在内存中如何存储? 如何访问数据? 数据的另一种访问方式 2 指针变量 意义:是一种特殊的变量,“值”是另一个变量的地址 定义指针变量基类型 * 指针变量名注意: * 表示该变量是指针变量 基类型 所指向变量的数据类型例: int *iptr1, *iptr2 ; 定义int类型的指针iptr1、iptr2 char * cptr ; 指针cptr指向char类型 int x , y ; char ch = a’; 让指针指向某个变量 iptr1=x; 指针iptr1指向变量x iptr2=y; 指针iptr2指向变量y cptr=ch; 指针cptr指向变量ch 设有声明: int *iptr1, *iptr2 ; char * cptr; int x , y ; char ch = a’; 在此基础上,有操作: 3 指针变量 如何通过指针变量间接访问x,y,z的值*iptr1=20; 等价于 x=20;*iptr2=*iptr1/3; 等价于 y=x/3;*cptr=‘A’; 等价于 ch=‘A’; printf(“%d\n”,*iptr1); 指针运算符 “ * ”和地址运算符“ ” “ ”运算用来求某操作对象的地址 “ * ”运算表示地址表达式所指变量 “*”与“”互为逆运算注意:指针在使用前必须有所指!指针不能随意指! 例1:应用指针间接访问变量a、b,使二者的数据互换. #include stdio.h void main() {int a,b,temp; int *x=a,*y=b; scanf(%d%d,a,b); *把x指向的变量a的值12取出,存放在temp中*/ temp=*x; /*把y指向的变量b的值35取出,赋值给x所指向的变量a*/ *x=*y; /*把temp的值12赋值给y指向的变量b*/ *y=temp; printf(a=%d,b=%d\n,a,b); } 例2:阅读下面程序,指出其功能。 #include stdio.h void main() {int x,y; int *p1,*p2,*p; scanf(%d%d,x,y); p1=x; p2=y; if(*p1*p2) {p=p1; p1=p2; p2=p;} printf(%d,%d,*p1,*p2); } 4 指针作函数参数之一 例3:定义函数并调用它,实现两个变量值互换。 #include stdio.h void exchange2(int *x, int *y) {int temp; temp=*x; *x=*y; *y=temp; } void main() { int a=18,b=30; /*调用exchange2使a和b的值互换*/ exchange2(a, b); printf(a=%d,b=%d\n,a,b); } 例4:编写函数sort3,对任意三个整数进行升序排序, 然后在主函数中调用它。 #include stdio.h void sort3(int *x,int *y,int *z) {int temp; if (*x*y) {temp=*x;*x=*y;*y=temp;} if (*y*z) {temp=*y;*y=*z;*z=temp;} if (*x*y) {temp=*x;*x=*y;*y=temp;} } 例5:编写函数prime_maxmin求任意闭区间[a,b]内的所有素数的个数以及其中的最大素数、最小素数。 #include stdio.h int prime(int x) {int i; for(i=2;ix;i++) if(x%i==0)return 0; return 1;} void prime_maxmin(int a,int b,int *pcount,int *pmax,int *pmin) {int k; for(k=a;k=b;k++)
文档评论(0)