C专家编程-读书笔记之第二、四章之运算符、指针总结

来源:互联网 发布:淘宝怎样换货 编辑:程序博客网 时间:2024/04/29 10:07

此处将运算符的优先级整理了一下。


所有的赋值符(包括复合赋值符)都具有右结合性,就是说表达式中最右边的操作最先执行,然后从右到左依次执行。相应的具有左结合性的操作符(如位操作符|和&)则是从左至右依次执行。实际上所有优先级相同的操作符,它们的结合性也相同,因为结合性的出现是用于消除歧义。


优先级如下表:



实际上有些专家建议在C语言中记牢两个优先级就够了:乘法和除法先于加法和减法,在涉及其他的操作符时一律加上括号。


容我之前对以上这句话深以为然,以致于将程序中该加括号的都加了,甚至连面试题中的经典题目*p++;都做错了,懊悔不已。

而实际实际上,程序主要以易读易改为主,如果加太多括号反而影响以上两点,只要秉着易读易改(保证不出现太多运算符的式子)去写就行,运算符的优先级还是有规律可循的,这个基础要尽量掌握,就算严以律己也不能保证你可能会分析别人那些要命的程式。


第四章中阐述了指针和数组的区别主要为以下几点:

1,数组名即为地址,该地址“不易变”,所以“可优化”,通常取数组的值只要根据地址即可。指针偏移取值必须先读取p本身的值,即使如果因为优化而使得p本身的值不一定是从“真正“存储p的地址中的地址读取的,但还是首先要读取p本身的值之后再由该读取值指向目标地址,再从目标地址和偏移量读取数值。

2,定义或者声明数组时不需要太详细的参数也可以,因为只是分配内存的一个地址;而定义指针p只是分配一个存储p本身的值的内存地址。

3,定义或者声明数组、指针一定要统一,不能是定义是数组而声明时却是指针。