指针定义和引用

指针定义和引用

ID:37444866

大小:316.31 KB

页数:31页

时间:2019-05-12

指针定义和引用_第1页
指针定义和引用_第2页
指针定义和引用_第3页
指针定义和引用_第4页
指针定义和引用_第5页
资源描述:

《指针定义和引用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第15讲指针定义和引用一、指针和地址的概念1.内存与地址2.指针和指针变量3.对内存单元的访问方式二、指针的运算1.指针变量的定义2.指针运算符3.指针变量的初始化4.指针的运算三、指针变量作为函数参数1.内存与地址存储单元:存放一个字节数据的存储器。存储单元的内容:存储单元内的数据。内存地址:存储单元的编号。一、指针和地址的概念······2007200320022000x=10;y=‘a’;z=9.8;2字节1字节4字节a109.8intx;chary;floatz;例:2.指针和指针变量指针:就是变量

2、的内存地址,是一个常量。指针变量:就是存放变量内存地址的变量。变量的指针:变量的地址。当把某个变量x的地址存入指针变量p后,我们就说这个指针变量p的指针指向该变量x。3.对内存单元的访问方式:直接访问方式:通过变量名访问。间接访问方式:通过变量的指针访问。1.指针变量的定义格式:类型说明符*指针变量名1,···;例:int*p1,*p2;说明:1)指针变量的名是p1和p2若写成:int*p1,p2;则p2被定义为整型变量而非整型指针变量。二、指针的运算格式:类型说明符*指针变量名1,···;例:int*p1

3、,*p2;说明:2)指针变量的类型是定义时所规定的指向变量的类型,如p1、p2只能指向整型变量,不能指向实型和字符型变量。格式:类型说明符*指针变量名1,···;例:int*p1,*p2;说明:3)指针变量的值表示的是它所指向变量的地址。若一个指针变量为0(NULL),表示该指针为空,说明它没有指向任何变量(存储单元)。2.指针运算符取地址运算符──“&”指针运算符──“*”取地址运算符──“&”作用:取变量的地址。例:inti,*p1;p1=&i;注意:不能对常量、表达式进行”&”运算。例:下列运算为非法

4、的。p2=&68;p3=&(i+1);&运算符返回操作对象的内存地址。指针变量通过&的赋值语句,指向该操作对象。例:p1=&i;/*将i的地址赋给指针变量p1*/p2=&chr;/*将chr的地址赋给指针变量p2*/p1p2chri赋值之后指针P2指向了字符型变量chr赋值之后指针P1指向了整型变量i引用运算符──“*”作用:取指针所指向的变量的值。例:inti=100,*p1;p1=&i;printf(“%d”,*p1);*运算符间接地存取指针变量所指向的变量的值例:p1=&i;/*将i的地址赋给指针

5、变量pi*/*p1=10;/*把10存入pi所指的地址(&i)中*/等同于语句:i=10;ip1*p110&i例指针运算符的使用main() {inta=50,*p;/*声明整型指针变量p*/p=&a; printf("*p=%d,p=%x",*p,p);/*取指针p所指地址的值*/*p=100; printf("a=%d,&a=%x",a,&a); }程序运行结果:*p=50,p=ffea=100,a=ffe例指针运算符的使用main() {int*p1,*p2,x1,x2;scanf("%d%d

6、",&x1,&x2);p1=&x1;p2=&x2;printf("*p1=%d,*p2=%d",*p1,*p2);p2=p1; printf("*p1=%d,*p2=%d",*p1,*p2);}输入:12输出:*p1=1,*p2=2*p1=1,*p2=1例&和*的混合运用&和*两个运算符的优先级相同,当混合使用时,按自右而左的顺序进行运算定义:inta,b;int*p1,*p2;有:p1=&a;p2=&b;p2=&*p1;P1&aP2&bab&a&b3.指针变量的初始化格式类型说明符*指针变量名1=

7、初始地址值,···;注意:指针变量在使用前必须要有确定的值,即指向一个变量。例:inti,*ptr1=&i;float*f1=0,*f2=NULL;4.指针的运算实质:地址的运算。类型:指针赋值运算:赋地址运算。指针算术运算:指针加(减)一个整数运算。两个指针相减运算。指针关系运算:两个指针比较运算。指针赋值运算:赋地址运算例交换两个指针所指向变量的值。main() {int*p1,*p2,x1=10,x2=20,t;p1=&x1;p2=&x2;printf("*p1=%d,*p2=%d",*p1,*p

8、2);t=x1;x1=x2;x2=t; printf("*p1=%d,*p2=%d",*p1,*p2);printf("x1=%d,x2=%d",x1,x2);}程序运行结果:*p1=10,*p2=20*p1=20,*p2=10x1=20,x2=10例两个指针变量交换指向。main() {int*p1,*p2,*s;intx1=10,x2=20;p1=&x1;p2=&x2;printf("*p1=%d,*

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。