【写给大家看的C语言】优先级的一些有趣特性

目录

1.sizeof操作符的特性

2.C语言中运算符优先级存在的问题

3.本章小结



1.sizeof操作符的特性

sizeof在C语言中实际上是一个操作符,但总有人认为它是个函数。

什么时候必须加上括号?当sizeof的操作数是个类型名,两边必须加上括号,例如sizeof(int)

这或许就是被人常常误认为它是个函数的原因。

2.C语言中运算符优先级存在的问题

优先级问题:   .点操作符的高于 * (->箭头操作符用于消除这个问题)

*p.f

你可能会认为应该是这样:p所指的对象的字段f     (*p).f

实际结果:对p取f偏移,作为指针。然后进行解除引用操作    *(p.f)

优先级问题:    [ ]高于*

int  *ap[]

你可能会认为应该是这样:ap是个指向int数组的指针   int  (*ap)[ ]

实际结果:ap是个元素为int指针数组       int    *(ap[ ])

优先级问题:函数()高于*

int  *fp()

你可能会认为应该是这样: fp是个函数指针,所指函数返回int。int (*fp)()

实际结果: fp是个函数,返回 int* 。   int* (fp())

3.本章小结

优先级问题:   .点操作符的高于 * (->箭头操作符用于消除这个问题)

                         [ ]高于*

                         函数()高于*

及我们常常错误认为sizeof()是一个函数!本章篇幅较短,但却讲述了一些比较费脑的知识点,贪多嚼不烂,我觉得已经足够了!

参考书籍:《C与指针》《C陷阱与缺陷》《C专家编程》这三本书常被称之为“C语言三剑客”,掌握它,你的C语言水平将达到很高的水准!

你可能感兴趣的