复杂指针理解
在学习小甲鱼的一个视频教程时
https://www.bilibili.com/video/BV17s411N78s?p=50
看到了一堆复杂的声明,所以就去网上找了篇文章巩固一下。
觉得这篇文章挺好的,摘抄一部分
https://blog.csdn.net/wangweixaut061/article/details/6549768
右左法则:首先从最里面的圆括号看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。
笔者要对这个法则进行一个小小的修正,应该是从未定义的标识符开始阅读,而不是从括号读起,之所以是未定义的标识符,是因为一个声明里面可能有多个标识符,但未定义的标识符只会有一个。
1:离名字越近的修饰符优先级越高
2:[],()优先级比*高
3:用()括起来的表达式的优先级最高。
typedef int PARA;
这种形式跟#define int PARA几乎一样,如前面几章所述,这些教材的宗旨是由浅入深,但实际做出来的行为却是以偏盖全。的确,这种形式在所有形式中是最简单的,但却没有对typedef进一步解释,使得不少人用#define的思维来看待typedef,把int与PARA分开来看,int是一部分,PARA是另一部分,但实际上根本就不是这么一回事。int与PARA是一个整体!就象int i:声明一样是一个整体声明,只不过int i定义了一个变量,而typedef定义了一个别名。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Elaina`s Blog!