C语言学习笔记第十章指针.pdfVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
⼀、地址与指针 1、指针:⼀个变量的地址称为该变量的指针 2 、指针变量:专⻔存储地址的变量 3 、访问变量的⽅式:直接访问和间接访问 2000—地址 p *p a—标识符 2000 5 a 5 2000 ⼆、指针变量 1、指针变量的定义:基类型 *指针变量名; 如:float *pointer;char *p;int *q 2 、指针变量的赋值:取地址 如:int *p;int i;p=i; float a,*p;p=a; 说明:赋予指针变量地址的变量类型应与指针变量基类型⼀致。不同类型地址字节不同 3 、指针变量的定义初始化:如char c=‘F’,*t=c;或者int a,*p=a; int a,*p;*p=a;这是错误⽤法 4 、空指针:int *p=NULL;或int *p=0; 说明:(1)指针变量初始化时等号右边不能是直接给出的具体地址,地址是0除外 (2)空指针⽆具体的内存单元,不能被引⽤,也没有存地址(实际为了后期使⽤) 5 、指针变量的引⽤:取地址 *取内容 如:a为a的地址,*p为指针变量p指向存储单元的内容 例题1:int a=3,b,*p;p=a;b=*p+2; printf(“%d,%d\n”,a,b); 输出结果:3,5 例题2:int a=3,b=5,c,*p,*q;p=a;q=b ; c=*p**q;printf(“%d”,c); 输出结果:15 6、指针变量作为函数参数 例题:void fun(int *x ,int*y)……双向传递 {*x+=*y ; *y+=*x;} main() {int a=3,b=5 ;fun(a ,b) ; printf(“%d,%d”,a,b);} 输出结果:8,13 说明:指针类型的形参接收实参的地址 例题2:void fun (int *x,int *y) {int t ;t=*x;*x=*y;*y=t;} main() {int a=3,b=5;fun(a,b);printf(“%d,%d\n”,a,b); 输出结果:5,3 说明:交换算法最好使⽤int t交换,若是*t则可能*t指向是重要内容 例题3:void fun(int *x,int *y) {int *t;t=x;x=y;y=t;} main() {int a=3,b=5;fun(a,b) ;printf(“%d,%d\n”,a,b); 输出结果:3,5 三、指针变量与⼀维数组 1、数组元素指针的定义和定义初始化 (1)int a[10];int *p;p=a[0]; (2)int a[10],*p ;p=a; (3)int a[10],*p=a[0]; (4)int a[10],*p=a; 即a为第0个元素a[0]的地址,a等价于a[0],a是⼀个地址常量,通常习惯叫做数组⾸元素地址 数组名就是⾸元素地址 2 、通过地址引⽤数组元素 例题1:int a[]={2,14,26,38,40},*p,*q;p=a;q=p+1; printf(“%d,%d,%d,%d\n”,*p,*(p+2),*p+2,*q+4); printf(“%d,%d”,p[3],q[3]); 输出结果: 2,26,4,18 38,40 (说明:[]即变址运算符, 例题2:int a[]={5,10,15,20,25},*b=a; printf(“%d ”,*p++);printf(“%d,%d”,*++p,++*p); 输出结果:5 15,16 说明:*与⾃增⾃减运算符同级且⾃右向左结合 3 、⽤数组名做函数参数 情况(1):数组元素作实参,形参是变量……值传递 情况(2):数组元素地址作实参,形参是指针变量……地址传递 情况(3):数组名作实参,形参是指针变量……地址传递 例题:int fun (int b[],int n)//相当于int fun (int *b,int n) {int i,s=0;for(i=0;in;i+=2)s+=b[i];return s;} main(){int a[]={1,2,3,4,5},s;s=fun(a,5);printf(“%d”,s);} 输出结果:9 四、⼆维数组与指针 1、⼆维数组的地址:如int a[

文档评论(0)

anma + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档