C语言程序设计 教学课件 作者 唐云廷第8章_2 指针(09_09_NIT_L).ppt

C语言程序设计 教学课件 作者 唐云廷第8章_2 指针(09_09_NIT_L).ppt

ID:50298166

大小:601.50 KB

页数:93页

时间:2020-03-07

C语言程序设计 教学课件 作者 唐云廷第8章_2 指针(09_09_NIT_L).ppt_第1页
C语言程序设计 教学课件 作者 唐云廷第8章_2 指针(09_09_NIT_L).ppt_第2页
C语言程序设计 教学课件 作者 唐云廷第8章_2 指针(09_09_NIT_L).ppt_第3页
C语言程序设计 教学课件 作者 唐云廷第8章_2 指针(09_09_NIT_L).ppt_第4页
C语言程序设计 教学课件 作者 唐云廷第8章_2 指针(09_09_NIT_L).ppt_第5页
资源描述:

《C语言程序设计 教学课件 作者 唐云廷第8章_2 指针(09_09_NIT_L).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、(P116)指针是一个重要的概念,C语言的高度灵活性和表达 能力,在一定程度上来自于巧妙而恰当地使用指针.第8章(2)指针18.3指针变量的定义:一.指针的概念:在C语言中,除了可定义int,char,float等变量外,还可定义一种变量:指针变量--专门用来存放变量(或对象)的首先看一下内存变量的安排与地址的关系.设在程序中定义了三个整型变量:inti=3,j=6,k=9;2在程序进行编译时,系统就根据类型给三个变量分配内存地址.在执行输出语句:printf(“%d”,i);通过一张变量与地址关系表,找到i的地址,这里设2000,然后把地址内的内容输出.同

2、理,执行scanf(“%d”,&i)时,把输入的数,送到变量i的地址中去(以变量i的首地址2000为代表).369…..200020022004ijk….3如果我们现在定义了一个指针变量:i_pointer1它是专门用来存放整型变量的地址,系统同样会给该变量分配一个地址.注:是变量就具有内存地址,所以指针变量i_pointer1也有一个地址.现设这个地址为:3010,3011(见下图).那末可通过如下语句,将i的地址存入变量i_pointer1中:i_pointer1=&i;/*&为取地址运算符.*/4….36920002000200220043010301

3、2ijki_pointer1通过语句:i_pointer1=&i;指针变量i_pointer1取得了变量i的地址.这时i_pointer1的内容就是2000,2000就是变量i所占内存单元的起始地址.这时,变量i和指针变量建立了某种联系:也即i_pointer1取得了i的首地址.这时可以说:指针变量i_pointer1指向变量i.5“间接访问”的情况在现实世界中是很多的. 设想图书馆的卡片,每一卡片都是指向书的指针,卡片上有书的位置,看到书的位置,到书库中找到该书.….369200020002002200430103012ijki_pointer1如果要访问

4、(存取)变量i,可先找到存放变量i地址的单元(即3010).在该地址处得到i的地址2000,然后再对i进行访问,这就是“间接访问”的情况.6二.指针变量:(一).指针变量的定义:一般形式:类型标识符*指针变量标识符例:inti,j;int*pointer_1,*pointer_2;上面定义了两个指针变量,变量名却是:pointer_1,pointer_2(注:无*号)并且是指向整型数据的指针变量.(即:该指针变量存放整型变量的地址)。*在C中的第二种用法7通过语句:pointer_1=&i;pointer_2=&j;使得指针变量pointer_1,point

5、er_2分别指向变量i,j.….xxxx1…..xxxx2xxxx1ijxxxx2Pointer_1Pointer_2&i&j8说明:(1).注意定义指针变量时的形式:int*pointer_1,*pointer_2;请注意:(1).与以前定义变量的不同之处.(2).此处的*用作定义指针之用,不是运算符,而是一说明符.标识符前“*”说明该变量为指针变量,但变量名为:pointer_1,pointer_29(2).一个指针变量是有类型的,指针的类型就是它指向的量的类型.一个指针变量只能指向规定的类型变量.如: 上面的pointer_1只能指向整型变量,而不能再

6、指向其它类型变量.否则要重新定义.(3).指针变量只能存放地址.任何指针值的合法范围:包括特殊的地址0,和一正整数,C系统把它解释为机器地址.10下面是一些指针变量p赋值语句:inti,*p=&i;p=0;p=NULL;地址0是一个特例,在头文件stdio.h中把符号常量NULL定义为0.NULL已定义为符号常量,代表整数0. 也就是使p指向地址为0的单元(即p的存储单元中所有二进位都为0).系统保证该单元不作它用.变量i的地址pi指向11三.指针变量的基本运算:有关指针运算有二个运算符:&和*1.取地址运算符----&:设有:inti=50,*p1,*p

7、2;则可:p1=&i;p2=p1;(使指针p1和p2均指向变量i)50i&ip1p2&i122.*(间接访问(取内容)操作运算符)功能:取得指针变量所指向的存储单元的内容.设:inta1=100,b1,*p1;p1=&a1;100a1p1&a1那么:b1=*p1;与语句b1=a1;是等价的*作为间接(取内容)操作符之用.(*的第三种用法,重要!)*为定义之用为什么 等价?13100a1p1&a1那么:b1=*p1;与语句b1=a1;是等价的间接访问(取内容)运算符*的功能:可获得由该指针指向的变量内容.这是因为:*p1这个式子代表指针变量p1所指的那个变量,

8、即a1.14例8.10从键盘中读入一个数值,给变量赋

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

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

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