指针是个升维工具,加一层指针就升一个维度,比如指针的指针的指针就是三维的。
普通人类无法思考三维以上的问题。
指针带来的难度是无穷大的,只要不停增加指针层数升维就可以了。
乒乓球难打吗?如何看待乔丹认为打乒乓比NBA拿MVP还难?
工程师、程序员和数学家的思维方式略有不同,而且范畴论对数学系学生是专业课/必修课,再难也符合预期,而C语言可能是选修课,稍难一些就超出预期了。
指针其实真不难,说白了就是国内那些不靠谱的教材搞出的后遗症。
它们非要把指针放到后面讲,将数组的时候不讲指针、将函数参数的时候不讲指针,非要把一个很平常很容易入门的东西,整成一个指针大杂烩,把指针和数组、函数传参的关系割裂开来。
这些大杂烩,一上来就故弄玄虚,什么int *t[100]是指针数据,int (*t)[100]是数组指针,只讲枯燥的概念,没有任何关于本质的阐述,你说学生能不晕吗?
指针其实就是个地址。
地址呢,用最通俗的解释就是快递柜上的编号。
如果你理解了这个概念,指针你就理解一大半了。
当然,数学大V认为指针比范畴论还难,大概率说的是升了维度的指针。
int **ptr,指针的指针
int ***ptr,三星级指针
int ***.....*****ptr 无穷级指针
这玩意的确绕口,但大部分程序员搞懂一星级指针基本就够用了。
可能遇见了三星级程序员:
int ***ptr;
说不定还遇到了四星级程序员:
int ****ptr;
大概也许碰到了真正的五星级程序员:
int *****ptr;
可能确实还有个七星级程序员:
int *******ptr;
万一真的遇到了十三星级程序员:
int *************ptr;
看来确实绕的要死。
但是我们大部分人是一星级程序员:
int *ptr;