- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)