指针运算符和赋值运算符
指针运算符
&取地址运算符,求得某个变量地址
*指针运算符,求得所指地址的空间里的值
赋值运算符和赋值表达式
C语言中,“=”称作赋值运算符,作用是将一个数值赋给一个变量或将一个变量的值赋给另一个变量,由赋值运算符组成的表达式称为赋值表达式。
简单赋值:
一般形式:变量名=表达式
注意:
在程序中可以多次给一个变量赋值,每赋一次值,与该变量相应的存储单元的数据就被更新一次,内存中当前的数据就是最后一次所赋值的那个数据。即,最左边变量所得到的新值是整个赋值表达式的值。
赋值运算符的优先级别高于逗号运算符。
注意赋值运算符“=”和等于运算符“==”的差别
赋值运算符的左侧只能是变量,而不能使常量或表达式。右侧可以是表达式,包括赋值运算表达式。“a=b=1+1”是对的,而“a=1+1=b”是错的(原因:由于赋值运算表达式的结合方式是从右到左,其第一个赋值表达式的左侧是常数,所以错误)
复合赋值:
在赋值运算符之前加上其他运算符可以构成复合赋值运算符。其中与算术运算有关的复合运算符有+=、-=、*=、/=、和%=等。
注意:
两个符号之间不可以有空格
复合赋值运算符的优先级与赋值运算符的相同。表达式n+=1等价于n=n+1,作用是去变量n中的值增1再赋值给变量n,其他复合赋值运算符的运算规则以此类推。
例:求表达式a+=a-=a*a的值(a=12)
解:先进行“a-=a*a”运算,相当于a=a-a*a=12-144=-132
再进行“a+=-132”运算,相当于a=a+(-132)=-132-132=-264
如果赋值运算符两侧的类型不一致,在赋值前系统将自动先把右侧的值或通过表达式求得的数值按赋值号左边变量的类型进行转换。
自增自减运算:
自加运算符“++”和自减运算符“--”的作用是使运算变量的值增1或减1。
自加、自减运算符是单目运算符。其运算对象可以是整型或实型变量,但不能是常量和表达式,因为不能给常量或者表达式赋值。
自加、自减运算符可以作为可以作为前缀运算符,也可以作为后缀运算符构成一个表达式,如++i、--i、i++、i--等都是合法的表达式。
注意:
无论是前缀还是后缀运算符,一定会有i的值加1或则减1这一步。
++i、--i:在使用i之前,先使i的值加1或减1,再使此时的表达式的值参加运算。(即加前或则减前取值)
i++、i--:在使用i之后,使i的值加1或减1,再使此时的表达式的值参加运算。(即加后或则减后取值)
自加自减运算符的结合方向:自右向左
例:-i++
解:i的左边是负号运算符,右边是自加运算符,负号运算符和自加运算符的优先级是相同的,而且都为“自右向左”结合的,所以此表达式相当于-(i++)。若i的初值为2,则表达式-(i++)的值为-2,i的值为3。