c语言二级考试指针视频,全国计算机二级考试C语言 指针精讲.ppt

这篇博客详细介绍了C语言中的指针概念,包括地址、指针变量的定义与引用。指针作为存放内存地址的变量,可以指向变量或数组的首地址。文中通过实例讲解了如何使用指针操作一维和二维数组,以及如何通过指针交换变量的值。此外,还探讨了多级指针的概念,以及指针与数组之间的相互作用,强调了指针在内存操作中的重要性。
摘要由CSDN通过智能技术生成

253b171540df25e1b84436cbe50dfc72.gif全国计算机二级考试C语言 指针精讲.ppt

第七章指 针,第一节指针概述,7.1.1地址与指针 一地址与取地址运算 过去,我们在编程中定义或说明变量,编译系统就为已定义的变量分配相应的内存单元,也就是说每个变量在内存中会有固定的位置在具体的地址,由于变量的数据类型不同,它所占的内存单元数也不相同,如执行以下说明语句后 int a3,b4; float c4.5,d8.6; char ex,fy; 其内存分配情况如图 整型变量a,b占两个字节,若a的地址为1010,则b的地址为101021012; 实型变量c,d占四个字节,若c的地址为1014,则d的地址为101021018; 字符型变量e,f占一个字节,若e的地址为1022,则f的地址为1023;,a,e,f,b,c,d,1010,1022,1023,1012,1014,1018,注意一个存储区域的“地址”指的是该存储区域中的第一字节的地址。,注意 变量的地址是通过运算符进行计算例如上例中 解析定义了一个指向整型数据的指针变量p,即p是一个存放 整型变量的地址变量。 。定义一个指针变量必须用符号“*”,它表明其后的变量是指针变量,但千万要记住指针变量是“p”,而不是“p”。,3。在定义了一个指针变量之后,系统就为这个指针变量分配一个存储单元,用来存放地址(如int *p),但此时该指针变量并未指向确定的整型变量,因为该指针变量中并未输入确定的地址。要想使一个指针变量指向一个整型变量,必须将整型变量的地址赋给该指针变量。 如int *p,i3; p”,此时p就指向了i。见图b.p,ip,i,图a,图b,4。指针变量也可以定义为指向实型,字符型以及其它类型的变量。 如float *p; char *q; 7.1.3 指针变量的引用 1。指针变量的引用形式,* 指针变量,其含义是指针变量所指向的值。 2。表示指针类型定义的“*”号与表示运算符的“*”号的区别 (1)在定义时,如“ int *p”中的“*”不是运算符,它只是表示其后的变量是一个指针类型的变量。,(2)在程序的执行语句中引用的“*”是一个指针运算符,如*p 表示“p指向的变量”。 【例1】用指针变量进行输入、输出。 main int *p, m; scanf“d”, ,【例2】说出下列程序的功能。 main0 int *p1, *p2, i1, i2; scanf“d,d”, 运行情况假设键盘输入为10,20 10,20 10,10,【例3】使两个指针变量交换指向。 main int *p1, *p2, *p ,i110, i220; p1 ,【例4】交换两个指针变量所指向的变量的值。 main int *p1, *p2, p ,i110, i220; p1 运行情况 20,10,注意通过上面的几个例子,请同学们一定弄清交换地址(即交换指向)与交换所指向的变量的值的本质区别。,7.1.4 指向指针的指针 1。指向指针的指针的定义形式,类型标识符 指针变量名,如int p; 即定义了一个指针变量p,且指向另一个指针变量,(该指针变量又指向一个指针变量),是一个二级指针。 (1)由于指针运算符“*”是按至右向左的顺序结合的,因此上述定义相当于 int **p; 可以看出(*p是指针变量形式,它外面的“*表示p指向的又是一个指针变量。,(2)怎样使一个指针变量指向另一个指针变量呢 如int p1 int *p2,i3; p2 1)尽管p1和p2都是指针变量,其值都是地址,但p1只能指向另一指针变量,而不能指向一个整型变量。 2)用一级指针引用变量的值要用一个“*”号,用二级指针引用变量的值要用两个“*”号。 如上例中,要引用i的值,可以用*p2,也可以用p1,其中p1表示p1所指向的指针变量所指向的值。,3)从理论上讲,还可以有多重指针。如图,p1,,【例5】多重指针举例。 main int i, p1,*p2,p3,*p4; i3; p1,第二节指针与数组,变量在内存中存放是有地址的,数组在内存存放也同样具有地址。对数组来说,数组名就是数组在内存中存放的首地址;指针变量是用于存放变量的地址,可以指向变量,当然也可存放数组的首地址或者数组元素的地址。,7.2.1 指针与数组,1。指针与一维数组 (1)若先定义一个一维数组,再定义一个指针变量,并将数组的首地址传给指针变量,则该指针就指向了这个一维数组。 (2)一维数组的引用 对一维数组的引用,既可以使用传统的数组元素下标法,也可以使用指针的表示方法。 如int a10 , *ptr ; ptra;或 ptr 则经过赋值后,ptr就得到了数组的首址,所以指针变量ptr就是指向数组a的指针变量。,3注意点 若指针变量ptr指向一维数组a,则C语言规定 1)ptri与ai都表示数组元素ai的地址,即,例如下面的五个程序功能完全一样。,【例1】以下标输入,输出数组的各元素。 main int a10,*ptra,i; fori0;i10;i scanf“d”, ,【例2】利用指针变量表示的地址法输入、输出数组 的各元素。 main int a10,*ptra,i; fori0;i10;i scanf“d”,ptri; printf“2 outputn”; fori0;i10;i printf“dt”,*ptri; ,【例3】利用数组名表示的地址法输入、输出数组的各 元素。 main int a10,*ptra,i; fori0;i10;i scanf“d”,ai; printf“3 outputn”; fori0;i10;i printf“dt”,*ai; ,【例4】利用指针表示的下标法输入、输出数组的各元 素。 main int a10,*ptra,i; fori0;i10;i scanf“d”,*ptri; printf“4 outputn”; fori0;i10;i printf“dt”, ptri; ,【例5】利用指针法输入、输出数组的各元素。 main int a10,*ptra,i; fori0;i10;i scanf“d”,ptr; printf“5 outputn”; ptra; fori0;i10;i printf“dt”, *.ptr; ,2。指针与二维数组,1通过指针与一维数组的关系,可以得到以下两点结论 )一维数组名代表了该数组的起始地址,也就是该一维数 组的第一个元素的起始地址。 )一维数组的任何一个元素的地址,均可以用其数组名加 上一个偏移量来表示,于是得到如下的等价关系,地址 值 a ptra0;,则用ptr就能访问数组的各元素。 3二维数组的任何一元素的地址也可用其一维数组(行)加一个偏移量(列号)来表示,于是有如下等价关系,含义 等价表示形式 第0行第1列元素地址 a01,*a1,*a01,a01 第2行第3列元素地址 *a23,a23,a23 第2行第3列元素的值 **a23,*a23, a23 ,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值