谭浩强C语言PPT.ppt

谭浩强C语言PPT.ppt

ID:48754879

大小:248.00 KB

页数:115页

时间:2020-01-21

谭浩强C语言PPT.ppt_第1页
谭浩强C语言PPT.ppt_第2页
谭浩强C语言PPT.ppt_第3页
谭浩强C语言PPT.ppt_第4页
谭浩强C语言PPT.ppt_第5页
资源描述:

《谭浩强C语言PPT.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第十章指针指针数据类型(1)指针与地址的概念,地址运算符&(2)指针变量的定义,初始化,指针的运算(3)指针与数组,指针与结构,指针数组,指针与函数,多级指针(4)存储区动态分配和释放的函数的应用(5)指针作为函数参数的应用引入指针的作用动态分配内存,直接处理内存地址有效地表示复杂的数据结构方便使用字符串,数组调用函数时能得到多于1个的值10-1地址和指针的概念内存单元的地址:内存中每一个字节的编号内存单元的内容:内存中存放的数据inti=3,j=6,k=9;在程序中一般是通过变量名来对内存单元进行存取操作。程序经过编译后,将变量名转换成变量

2、的地址,对变量的存取都是通过地址进行的。963内存数据区内存数据区200420022000kji直接访问与间接访问直接访问:按变量地址存取变量值的方式。间接访问:将变量地址放在一个变量(指针变量)中,在存取变量时,先到存放变量地址的变量(指针变量)中取出变量的地址,然后再取出变量值32000i20003i_pointi指针:一个变量的地址称为该变量的指针指针变量:一个变量专门用来存放另一个变量的地址,则称它为指针变量指针变量指向某变量:某变量的地址赋给某指针变量20003i_pointi10.2变量的指针和指向变量的指针变量变量的指针:变量的

3、地址指针变量:存放变量地址的变量,用来指向另一个变量20003i_point*i_pointii_point:指针变量10.2.1指针变量的定义定义的一般形式:基类型*指针变量名int*point1;float*point2;char*point3;几点注意:指针变量前的*,表示该变量的类型为指针变量在定义指针变量时必须指定基类型指针与目标变量联系在一起,不能自由地如同汇编那样赋予内存地址,而只能赋予一个变量(包括数组)的存储地址,即目标变量的地址。初始化格式:数据类型 *指针名=&变量名(或一维数组名,或NULL);(NULL在stdio.

4、h,alloc.h等头文件中定义为0或0l)赋值号右边的变量或数组的数据类型必须与指针数据类型一致,否则编译时会出现警告;初始化为NULL表示"空",即不指向任何目标.如inta;int*pa=&a;float*pf=NULL;指针的初始化和赋值:赋值格式:指针名=&变量名(或一维数组名,或NULL);或:指针名1=指针名2;(注意指针名前不能再带有‘*’号)如inta,*pa,*pb,*pa1,b[5];pa=&a,pa1=pa,pb=b;指针在未被初始化或赋值之前,其指向不定,俗称"野指针",其指向不定,因此不能访问"野指针"的目标,否则

5、可能产生灾难性的后果.10.2.2指针变量的引用与指针变量有关的运算符:&:取地址运算符&a:变量a的地址*:指针运算符(间接访问运算符)*p:指针变量p所指向的存储单元的内容inti,j;int*point1,*point2;使指针变量指向另一个变量:赋值语句point1=&i;point2=&j;给指针变量所指向的变量赋值:*point1=3;(i=3;)*point2=4;(j=4;)20003point1i20024point2jmain(){inta,b;int*point_1,*point_2;a=100;b=10;point_1

6、=&a;point_2=&b;printf(“%d%d”,a,b);printf(“%d%d”,*point_1,*point_2);}&a100Point_1a100Point_1a&b10Point_2b10Point_2b对*和&运算符的几点说明从*和&的含义可见,指针运算符*与取址运算&是互逆的,但结果的类型不同:&(*p)结果得到p,此时p只能是指针;*(&p)结果得到p,此时p只能是变量.由于*与&同优先级,自右至左结合,所以上述括号可以省略。如:point_1=&a;&*point_1:*point_1就是a,取地址运算后就得到

7、a的地址,就是point_1。*&a:&a就是a的地址,也就是point_1,再进行间接访问,就是变量a。(*point_1)++:a++*point_1++:由于++与*同优先级,自右至左结合,相当于*(point_1++),又由于++在后是“后加”,故先对point_1进行*运算,得到变量a的值,再将指针变量point_1加1,point_1不指向a了。对比*++point_1,先指针变量point_1加1,再取其中的值。main(){int*p1,*p2,*p,a,b;scanf(“%d%d”,&a,&b);p1=&a;p2=&b;if

8、(a

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

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

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