第八章:指针02
让编程改变世界
Change the world by program
对“&”和“*”运算符再做些说明
如果已执行了语句 pointer_1 = &a; (1) &*pointer_1的含义是什么? “&”和“*”两个运算符的优先级别相同,但按自右而左方向结合,因此先进行 *pointer_1的运算,它就是变量a,再执行 & 运算。 因此,&*pointer_1与 &a 相同,即变量 a 的地址。 如果有:pointer_2 = &*pointer_1;
它的作用是将 &a (a的地址) 赋给 pointer_2 ,如果 pointer_2 原来指向 b ,经过重新赋值后它已不再指向 b 了,而指向了a。 请看图解! [caption id="attachment_147" align="aligncenter" width="300"]
源码分析
题目: 输入a和b两个整数,按先大后小的顺序输出a和b。
源程序: Example01.c(点击下载) [caption id="attachment_148" align="aligncenter" width="300"]
指针变量作为函数参数
题目:对输入的两个整数按大小顺序输出!这次用函数实现交换功能!
程序源码:Example02.c(点击下载) [caption id="attachment_149" align="aligncenter" width="300"]
实战演练
题目:输入a、b、c 3个整数,按大小顺序输出
程序思考:---->>>> 假定 a > b > c那么作几次对比? 程序源码:example03.c(点击下载)数组与指针
一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址。 指针变量既然可以指向变量,当然也可以指向数组元素(把某一元素的地址放到一个指针变量中)。 所谓数组元素的指针就是数组元素的地址。指向数组元素的指针
定义一个指向数组元素的指针变量的方法,与以前介绍的指向变量的指针变量相同。 例如:int a[10]; // 定义a为包含10个整型数据的数组
int *p; // 定义p为指向整型变量的指针变量
应当注意,如果数组为int型,则指针变量的基类型亦应为int型。p = &a[0]; // 把a[0]元素的地址赋给指针变量p
也就是使p指向a数组的第0号元素,见下图 [caption id="attachment_150" align="aligncenter" width="300"]