指针02 – 零基础入门学习C语言42
第八章:指针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。
请看图解!
指针详解
(2) *&a的含义是什么?
先进行&a运算,得a的地址,再进行*运算。即&a所指向的变量,也就是变量a。
&a和pointer_1的作用是一样的,它们都等价于变量a。即*&a与a等价。
(3) (*pointer_1)++ 相当于 a++。
注意括号是必要的,如果没有括号,就成为了pointer_1++,从附录可知: ++和为同一优先级别,而结合方向为自右而左,因此它相当于*(pointer_1++)。
由于++在pointer_1的右侧,是“后加”,因此先对pointer_1的原值进行*运算,得到a的值,然后使pointer_1的值改变,这样pointer_1不再指向a了。
源码分析
题目: 输入a和b两个整数,按先大后小的顺序输出a和b。
源程序: Example01.c(点击下载)
输入a和b两个整数,按先大后小的顺序输出a和b
指针变量作为函数参数
题目:对输入的两个整数按大小顺序输出!这次用函数实现交换功能!
程序源码:Example02.c(点击下载)
对输入的两个整数按大小顺序输出
实战演练
题目:输入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号元素,见下图
指向数组元素的指针
通过指针引用数组元素
引用一个数组元素,可以用:
(1)下标法,如a
(2)指针法,如*(p+i)
其中的a是数组名, p是指向数组元素的指针变量,其初值 p == a。
注意:数组名即翻译成数组的第一个元素的地址!
源码分析
输出数组中的全部元素
假设有一个a数组,整型,有10个元素。要输出各元素的值有三种方法:
(1) 下标法
(2) 通过数组名计算数组元素地址,找出元素的值。
(3) 用指针变量指向数组元素。
大家给分析分析,翻炒翻炒~
视频下载
技术, IT技术, 视频教程, C语言
风险提示及免责条款
市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!