指针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语言


风险提示及免责条款

市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部