c语言的指针型数据的运算,程序员编程C语言指针答疑:指针的运算也就这么回事儿...

本文详细介绍了C语言指针的概念,特别是“己他”理论和“星指组合”的运用。通过一道C语言指针试题,解释了指针的“己值”、“他型”、“他址”和“他值”的概念,以及如何通过“星指组合”获取指针所指向的值。文中强调了指针++运算的本质,并通过实例代码分析了指针操作后的变化。最后,指出C语言指针并非难事,掌握核心概念即可轻松应对。
摘要由CSDN通过智能技术生成

一、程序员编程C语言答疑合集

更多C语言学习答疑文章,请参阅:程序员编程C语言答疑文章合集

点击下方,加入我的“C语言答疑课堂”圈子吧,第一时间看到我给大家带来的C语言试题解析!

二、【程序员编程】【C语言指针试题】

给你下述C程序代码:

int array[MAX] = {1,2,3,4,5};int *pInt = array; pInt++;printf("%d\n", *pInt);输出结果是什么?

1、“己他”概念和“星指组合”概念来解题

这道C语言指针题还行,也不是很难,使用我提出的C语言指针“己他”概念和“星指组合”来解这道题是很简单的。有关C语言指针的“己他”概念和“星指组合”概念在我的专栏:

的第九章和第十章有详细的阐述,如下:

第九章:章节九、指针“己X”概念,从这里开始!(基本数据类型篇)

第十章:章节十、指针“他X”概念,精彩来了!(基本数据类型篇)

这道C语言指针试题就会用到“己他”概念中的“己值”、“他型”、“他值”、“他址”和“星指组合”的概念!

简单来说,这些概念的意思分别如下:

1.1 “己X”概念

“己X”分为己型、己址和己值。

“己型”:就是C语言指针自己的类型;

“己址”:就是C语言指针自己的地址;

“己值”:就是C语言指针自己的数据值;

1.2 “他X”概念

“他X”概念分为他型、他址和他值。

“他型”:就是C语言指针指向的对象的类型;

“他址”:就是C语言指针指向的对象的地址;

“他值”:就是C语言指针指向的对象的数据值;

1.3 “星指组合”概念

“星指组合”就是“星号”+“指针变量”的组合,这种组合的意思就是获取指针变量的他值!

2、C程序代码

我来把这道C语言指针题扩展成一段C程序代码,如下:

a8af9a367a4e86633b24b68e75b7c00f.png

C程序代码

这段C程序代码定义了一个数组和一个指针变量,并且指针变量的初始己值是数组第一个元素的地址。下面对指针变量做了一个“++”运算,运行结果如下:

b7fad766c259035eaaef03f1668be84c.png

C程序运行结果

3、C程序代码分析

3.1 分析1

C程序的第7行

int *pInt = array;这种代码写法我在专栏中说过,数组名代表的是第一个元素的地址,现在数组名的己值给了指针变量pInt的己值,那么现在pInt的己值就是数组第一个元素的地址。从第10和第11行可以看出数组名array和指针变量pInt的己值都是22fea8,这个就是第一个数组元素的地址。

C程序代码的第14行

pInt++;是一个++运算。我在上述专栏中专门介绍过指针变量的常见运算,这种++运算本质上就是对指针变量pInt的己值做++运算,而不是他值做++运算。很多同学就是搞不清

pInt++*pInt++这两种C代码写法的区别,就是没有搞清C语言指针的“己值”和“他值”的概念。我们回到这段C程序代码。在第14行pInt做++运算之前的己值是22feb8,现在做了++运算,是不是就是简单的“22feb8 + 1 = 22feb9”呢?当然不是!我在上述专栏中提过,指针变量的己值加上一个数字,本质上是“己值 + 数字 * 他型的字节数 ”!这里,己值是 22fea8,数字是1,他型是int,字节数在我的电脑上是4,所以pInt的++运算实际上是“22fea8 + 1 * 4 = 22feac”!

现在指针变量pInt的己值变成了22feac,这个数字的含义是“他址”,就是数组元素array[1]的地址。第16行通过星指组合:

*pInt拿到了指针变量pInt的他值,也就是array[1]的值:2.

三、C语言指针试题总结

这道C语言指针试题看上去还行,用到了上述专栏提出的“己他”概念和“星指组合”概念,所以我一直跟同学们说“C语言指针就是个纸老虎”!

举报/反馈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值