欢迎来到天天文库
浏览记录
ID:58885903
大小:1.61 MB
页数:106页
时间:2020-09-30
《C语言程序设计第八章 指针ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八章指针8.1概述C程序设计中使用指针可以:使程序简洁、紧凑、高效有效表示复杂的数据结构动态分配内存方便使用字符串有效使用数组调用函数时可以得到多于1个的值直接处理内存地址8.2指针的概念一、数据的存取1、内存地址内存的每个字节都有一个编号,这个编号称为“内存地址”。…低地址高地址2000200220043000程序中的每个数据都对应着内存中的一个地址,从该地址开始的一个或多个字节用来存放该数据。inti,j,k;ijk2、内存单元的地址和内存单元的内容的区别:若i=3,j=5;000000110000
2、00000000010100000000从图中可以看出它们的区别。程序编译后已经没有i、j、k这些变量名了,而是将变量名转换为变量的地址,计算机通过内存地址对变量进行存取。二、直接访问和间接访问1、直接访问方式:…低地址高地址2000200220043000ijk00000011000000000000010100000000①、i=3;②、j=i+2;③、printf("%d",i);④、scanf("%d",&i);⑤、k=i+j;如何执行?0000100000000000按变量的地址存取变量的方式2
3、、间接访问方式:C语言中可以定义整型变量、实型变量、字符型变量,各自存放相应类型的数据;另外还可以定义和使用一种特殊类型的变量,用来存放变量的地址。…低地址高地址2000200220043000ijk000000110000000000000101000000000000100000000000假设已经定义变量ip用来存放整型变量的地址,它被分配到内存单元3000和3001。ip通过执行语句:ip=&i;将整型变量i的地址存放到变量ip中,即ip的值为变量i所对应的内存单元的起始地址2000。2000现在
4、要存取i的值可以这样做:先找到存放i的地址的内存单元地址(3000和3001),从中取出变量i的地址(2000),然后再对2000和2001单元进行存取——这就称为间接访问。通过变量ip知道变量i的地址,从而找到变量i的内存单元,因此说变量ip指向变量i,用箭头表示这种“指向”关系。20003000ip2000i变量ip的值为2000,即变量i的地址,这样就在ip和i之间建立了一种联系:3、关于“指向”的含义:4、为了表示将数值10送到变量i中,可以有两种表示方法:①、将10送到变量i所标志的单元中;20
5、00i10②、将10送到变量ip所指向的单元中;20003000ip2000i10三、指针与指针变量通过地址能找到所需的变量单元,可以说:地址“指向”该变量单元。因此,把一个变量的地址称为该变量的“指针”。…低地址高地址2000200220043000ijk000000110000000000000101000000000000100000000000ip2000如果一个变量专门用来存放另一个变量的地址,则称它为“指针变量”。指针变量的值(即指针变量中存放的值)是指针(地址)。注意区分“指针”和“指针变量
6、”这两个概念。…...…...2000200420062005整型变量i10变量i_pointer200120022003指针与指针变量指针:一个变量的地址指针变量:专门存放变量地址的变量2000指针指针变量变量的内容变量的地址指针变量变量变量地址(指针)变量值指向地址存入指针变量②、数据所占有的内存单元个数是由其数据类型决定的;③、首地址:即第一个单元的地址;④、表示地址的数与整数的区别;⑤、变量i、j的地址可能相邻,也可能不相邻,是由系统分配的,我们不必关心。①、程序中定义的每个变量在编译后都占有各自
7、的内存单元,系统是通过内存地址对变量进行存取的;四、说明8.3指针变量的定义和引用指针运算符:*为了表示指针变量和它所指向的变量之间的联系,用“*”表示指向的关系。如:ip代表指针变量,*ip表示ip所指向的变量。即*ip也代表一个变量。例:①、若:ip=&i;i=5;*ip=5;结论:*ip与i等价。②、x=i+1;x=*ip+1;取地址运算符:&它与一个变量连用,以得到该变量的内存地址。说明:①、取地址运算符只能作用于变量:&x,&a[5];不能作用于常量、表达式或寄存器变量:&25,&(i+1);②
8、、不能把整数赋值给一个指针变量:ip=3000;③、不能把一个指针变量的值赋值给一个整型变量:x=ip;&与*运算符含义含义:取变量的地址单目运算符优先级:2结合性:自右向左含义:取指针所指向变量的内容单目运算符优先级:2结合性:自右向左两者关系:互为逆运算理解…...…...2000200420062005整型变量i10变量i_pointer2001200220032000指针变量i_pointer-----指针变量,它的内
此文档下载收益归作者所有