新书上市 | C程序员! 这可能是你搞定指针最轻松的方式 - Go语言中文社区

新书上市 | C程序员! 这可能是你搞定指针最轻松的方式


在学习C语言的过程中,要说最大的难关,非指针莫属

关于指针的学习,我们经常会听到下面这样的建议:

  • “只要理解了计算机的内存和地址的概念,指针什么的就不在话下了。

  • “因为C是低级语言,所以先学习汇编语言比较好。”

的确,在理解C指针时,如果已经对内存和地址的概念有所了解,就会快很多。但是,仅懂得内存和地址的概念,是无法掌握指针的。理解内存和地址的概念可能是理解指针的必要条件,但并不是充分条件。这只是“万里长征”的第一步。

观察一下初学者实际使用指针的过程,就会发现很多下面这样的问题。

0

1

用int *a;声明指针变量……到这里还挺像样的,可是当将这个指针变量当作指针使用时,依然悲剧地写成了*a。

0

2

写出了int &a;这样的声明(←拜托,这又不是C++)。

0

3

什么是“指向int的指针”?指针不就是地址吗?怎么还有“指向int的指针”“指向char的指针”,难道它们还有什么不同吗?

0

4

当学习到“给指针加1,指针会前进2个字节或4个字节”时,可能会有这样的疑问:“指针不就是地址吗?在这种情况下,难道指针不应该是前进1个字节吗?”

0

5

“对于scanf(),在使用%d的情况下,需要在变量前加上&才能传递参数。可是,为什么在使用%s时就可以不加&呢?”

0

6

当学习到将数组名赋给指针时,将数组和指针混为一谈,犯下“把未分配内存空间的指针当作数组访问”或者“试图把指针赋给数组名”这样的错误。

出现以上混乱情形,并不是因为没有理解“指针就是地址”,真正的原因是:

C语言奇葩的声明语法

数组与指针之间微妙的兼容性

看到这里说C语言的声明语法奇葩,估计有人会不明所以。那么,大家是否有过如下疑问呢?

在C语言的声明中,[]的优先级比*高,所以char *s[10];这样的声明表示“指向char的指针的数组”——弄反了吧?

搞不明白double (*p)[3];和void (*func)(int a);这样的声明到底应该怎样阅读。

int *a;表示把a声明为“指向int的指针”,但表达式中的*却也可以对指针进行解引用。明明是一样的符号,为啥意思却相反?

int *a和int a[]在什么情况下可以互换?

空的[]可以在什么地方使用,代表的又是什么意思?

如果你也有,那么不妨读一读下面这本书。

点击上图购买

[日]前桥和弥——著  

朱文佳——译

为你扫清关于指针的一切问题!

这是一本专门讲解C指针的书。

本书作者是日本知名的“毒舌程序员”,其言辞犀利,观点鲜明,擅长将复杂的知识浅显易懂地讲清楚。本书结合作者多年的编程经验和感悟,从C指针的概念讲起,通过实验一步一步地揭示了指针和数组、内存、数据结构的关系,展现了指针的常见用法,揭示了各种实用技巧,还通过独特的方式告诉读者怎样解读C语言那些让人“纠结”的声明语法,以及如何绕过C指针的陷阱等。

指针被誉为“C语言的灵魂”想要运用自如并非易事。事实上,上网一搜就会看到,“C指针好难啊”的抱怨比比皆是。即便是自认为“C语言很简单嘛,指针什么的我已经完全掌握了”的老手,其实也可能只是知其一不知其二。

例如,大家可以确认一下自己是否知道下面这些事实。

在引用数组中的元素时,a[i]中的[]其实跟数组没半点关系。

C语言中不存在多维数组。

如果你不了解,那么也不妨读一读本书。

对于指针之难学,作者一阵见血地指出:

“理解不了C指针不是你的错,是C语言的语法太坑人了,仅此而已!

实际上,作者也是在使用C语言好几年之后,才真正明白其“奇葩”的语法的。而作者写这本书的初衷,也就是希望和他一样曾为指针感到苦恼的人,在阅读本书时,能够发自内心地感慨:“要是那个时候上天能让我遇见这样一本书,该有多好啊!”

本书特色

直击学习难点,打通C语言任督二脉

在幽默的“毒舌吐槽”中参透指针

作者20余年一线经验沉淀,讲解精妙

左右滑动查看

原版长销20年,经典经得起时间考验

此新版重磅升级!

不只是初学者,本书也适合有一定经验的程序员阅读。在深入理解了C语言的语法之后,对于那些迄今为止一直使用的惯用写法,就能够“知其然知其所以然”了。

【今日互动】

  • 你觉得学习C语言的过程中,最难的部分是什么?

  • 欢迎大家留言分享,评论里点赞最高的小伙伴将会获得新书《征服C指针(第2版)》1本!

  • 活动截止时间:2021年4月5日。

【推荐阅读】


 

喜欢这篇文章?点个“在看”吧~▼

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/turingbooks/article/details/115301046
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-06-12 11:51:20
  • 阅读 ( 1622 )
  • 分类:职场

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢