找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 165|回复: 7
打印 上一主题 下一主题

说指针

[复制链接]

156

主题

559

帖子

1202

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1202
跳转到指定楼层
1#
发表于 2016-5-30 17:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
以下文字是我针对另一个网友普遍认为的“指针就是地址”等类似论断阐述的一些文字,很多人对这些基础的东西知其然不知所以然,整理出来希望可以对大家有所帮助。
5 C' e0 i' I2 ~) f$ u
- r; r9 O( ^& t! [4 YC的指针是个复合命题,三个内容组合起来才是完整的指针:实现C的平台上的地址;类型;运算。对指针的解释,任何单纯拿一部分出来说都是片面不完整的。
5 \* X0 J3 ^: N. C! L地址不用多说,问题出现在绝大多数人把地址等价于指针,比如指针就是地址。类型是指针可以解释成的数据组成,包括int,short这样的基本类型,也包括struct弄出来的自定义类型。类型比较好理解,甚至在未知类型的时候,也有一个不完全类型void*来做适配。运算,这个是和类型紧密相关的,比如为什么指针没有乘除法运算,为什么int*的指针做加一运算得到的结果 与 char*的指针做加一运算得到的结果可能不一样,为什么所有类型里面只有指针才有->和*运算,另外,运算概念的理解也可以用void*来说明为什么一个void*类型的指针,不能做任何合法运算。& Z7 r" H- r& U# G4 E% @5 W2 d

5 _' k! u6 I% R所以指针类似一个组合概念的定义:合法地址,合法类型,针对类型的合法操作,三者共同定义一个指针。
1 a1 ^$ W6 p/ _" M3 e类型也是一个组合概念:一段合法内存,即sizeof(type)的内存区域;针对该类型的合法操作,所以,比如针对float类型,我们没法用C里面的 a == b 来判断 a 是不是b,而需要用 a - b < delta 来近似等于。
' D) h8 W7 z2 Y; m' y  z" l8 Y+ G6 @: {- ?2 k" j, l$ D5 U
重点是类型,再延伸下去,可以延伸到类型和对象,它们的结构不是很像吗。
! w: x4 Z2 w6 G0 Q( @, F2 F; j) ^3 G1 H- [' G+ ~
>>>顺便记录一个关于汇编和C语言,起因是不少人喜欢用汇编来解释C,觉得这玩意高级黑,这不是错,错在用的场合。; {3 k+ d7 U( u8 k6 R, @
C有自己的规范,单片机只是一个运行平台,C标准只有一份,而不是单片机单独制定一份,所以在C层面上强调单片机和其他机器那是自欺欺人,因为本就没什么不同。汇编这个层面和C是另一个领域。做设计一个很重要的就是边界定义,哪些是系统的,哪些不是系统的。C自己有自己的边界定义,它是一个完备体系,所以解释C的东西,用C系统里的元素来解释就好。汇编可以加深对编译器的理解和编译器实现的理解,但对帮助C语言的理解作用不大。
% l" F5 O  ^9 e. x$ n8 L2 C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

163

主题

525

帖子

1236

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1236
2#
发表于 2016-6-1 17:28 | 只看该作者
谢谢楼主分享!!

160

主题

620

帖子

1233

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1233
3#
发表于 2017-1-5 13:29 | 只看该作者
谢谢楼主分享!!

208

主题

649

帖子

1492

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1492
4#
发表于 2017-2-8 14:29 | 只看该作者

169

主题

582

帖子

1242

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1242
5#
发表于 2017-2-16 13:58 | 只看该作者

214

主题

642

帖子

1658

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1658
6#
发表于 2017-2-16 14:00 | 只看该作者

156

主题

503

帖子

1186

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1186
7#
发表于 2017-2-17 13:19 | 只看该作者
~~~

1

主题

57

帖子

178

积分

二级会员(20)

Rank: 2Rank: 2

积分
178
8#
发表于 2018-4-17 14:24 | 只看该作者
指针是 C 最强大的,新的語言都沒有了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-9-20 00:17 , Processed in 0.059955 second(s), 32 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表