第6章 指针—补充案例

更新时间:2023-10-04 18:03:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

博学谷——让IT教学更简单,让IT学习更有效

第6章 指针

案例6-1 指针的概念 一、案例描述

1、 考核知识点

编号:00606001 名称:指针的概念 2、 练习目标

? 掌握指针的概念

3、 需求分析

在C语言中有一种特殊类型的变量,专门用于存放其他变量的地址,这种变量称为指针。为了加深读者对指针概念的理解,本案例将定义变量和指针变量,来演示指针的本质。 4、 设计思路(实现原理) 1)声明main()函数。

2)在main()函数中,定义两个变量和两个指针变量,指针变量用于存放变量的地址。

二、案例实现

编写程序,代码如下:

1 #include 2 void main() 3 { 4 5 6 7 8 }

int i; char c;

int * pi = &i; char * pc = &c;

三、案例总结

在该案例中,首先定义了一个整型变量i和一个字符变量c,然后使用“&”运算符分别获得变量i和c的内存地址,并分别使用一个整型指针变量和一个字符指针变量来记住地址。其中指针变量pi用于记住变量i的内存地址,而指针变量pc用于记住变量c的内存地址。下面通过一个图来演示,如图6-1所示。

1

博学谷——让IT教学更简单,让IT学习更有效

0x804a0200x804a024i:0c:0??0x804a0100x804a014 pi:0x804a020pc:0x804a024

图6-1 变量在内存中的存储结构

在图6-1中,编号0x804a020、0x804a024、0x804a010和0x804a014代表的都是内存中的地址,i代表的是一个整型变量,c代表的是字符变量,pi代表的是指向i的整型指针变量,pc代表的是指向c的字符指针变量。箭头代表了指针变量pi,pc和变量i,c之间的指向关系(即指针变量指向变量)。不难看出,指针变量实际上存储的并不是具体的值,而是变量的内存地址。

案例6-2 指针的运算 一、案例描述

1、 考核知识点

编号:00606002 名称:指针的运算

2、 练习目标

? 了解指针的常见运算符有哪些 ? 掌握指针的运算

3、 需求分析

指针作为一种特殊的数据类型同样也可以使用算术运算符、逻辑运算符等进行运算。为了加深初学者对指针运算的理解,本案例将演示常见指针运算符的用法。 4、 设计思路(实现原理) 1) 声明main()函数。

2) 在main()函数中定义指针变量,分别用指针运算符进行运算。

二、案例实现

编写程序,代码如下:

1 #include 2 void main() 3 { 4 5 6 7 8

int array[5] = {100, 110, 120, 130, 140}; int *p1 = &array[0]; int *p2 = &array[1]; int *p3 = &array[3];

printf(\

2

博学谷——让IT教学更简单,让IT学习更有效

9 10 11 12 13 14 15 16 17 18 19 20 21 }

printf(\printf(\printf(\

printf(\printf(\

printf(\++p2;

printf(\printf(\--p3;

printf(\getchar();

运行结果如图6-2所示。

图6-2 运行结果

三、案例总结

1、案例的第9行,通过取址运算符“&”获取元素array[0]的地址。 2、案例的第10行,通过取值运算符“*”获取地址&array[0]的值。

3、案例的第11-13行,通过指针变量与整数的加减运算,指针的值发生了变化。这里p1+1的值比p的值大4,而p1-1的值比p的值小4,是因为int类型的数据在内存中占用的就是4个字节,指针变量的加减运算实质上是其指针在内存中移动数据类型所占据的字节数。

4、案例的第14-19行,通过指针变量的自增自减运算,指针的值发生了变化。在指针变量p2和p3分别进行自增自减运算后,对其进行取值操作,它们的值都移动了一个元素:p2指向的是数组第2个元素的值,进行自增操作后输出第3个元素的值;p3指向的是数组第4个元素的值,进行自减操作后输出第3个元素的值。由此可以发现++p2与p2+1的操作效果一样的,--p3与p3-1的操作效果一样的,都是对内存地址移动一个数据类型大小的长度。

3

博学谷——让IT教学更简单,让IT学习更有效

案例6-3 指向变量的指针 一、案例描述

1、 考核知识点

编号:00606003

名称:指向变量的指针 2、 练习目标

? 掌握指针变量的使用

3、 需求分析

为了让初学者加深指针变量的理解,本案例将演示指针变量的使用及作为函数参数的使用。 4、 设计思路(实现原理)

1) 声明func()函数,用于改变指针指向变量的值。 2) 声明main()函数。

3) 在main()函数体内,定义变量和指针变量。

4) 打印变量和指针变量,调用func()函数,再次打印变量和指针变量。

二、案例实现

编写程序,代码如下:

1 #include 2 void func(int *p) 3 { 4 5 }

6 void main() 7 { 8 9 10 11 12 13 }

int num = 10;

printf(\func(&num);

printf(\getchar(); *p = 20;

运行结果如图6-3所示。

4

博学谷——让IT教学更简单,让IT学习更有效

图6-3 运行结果

三、案例总结

1、从图6-3中可以看出,在func()函数调用后变量num的值发生了变化。在程序中第2行代码定义一个func()函数,该函数的参数类型为指针类型。在main()函数中调用该函数时传入变量num的地址,对其取值运算后赋入新的值。

2、需要注意的是,func()函数必须写在main()函数的前面,否则需要在main()函数前声明func()函数。

案例6-4 指向一维数组元素的指针 一、案例描述

1、 考核知识点

编号:00606004

名称:指向一维数组元素的指针 2、 练习目标

? 了解指针在一维数组中的移动方式 ? 掌握用指针访问一维数组元素的方式

3、 需求分析

数组可以通过索引的方式来访问数组中的每个元素,也可以用一个指针来指向一维数组,通过指针的移动来依次访问数组中的元素。为了让初学者加深对指向一维数组元素的指针的理解,本案例将定义一个一维数组,并用指针依次访问数组元素。 4、 设计思路(实现原理) 1) 声明main()函数。

2) 在main()函数中,定义一个一维数组,并用指针依次访问数组元素。

二、案例实现

编写程序,代码如下:

1 #include 2 void main() 3 { 4 5 6 7 8 9 10

int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int i, *p;

for (p = array, i = 0; i < 10; p++, i++) { }

printf(\

5

printf(\

本文来源:https://www.bwwdw.com/article/ugad.html

Top