C语言中的指针

2021 年 1 月 30 日 星期六
/
23

C语言中的指针

指针中相对复杂的主要有三类情况:指针数组、数组指针和函数指针,以及三者相互嵌套的情况。弄清楚C中各类符号的运算优先级才能真正理解其含义。

C语言运算符号优先级

优先级运算符结合律
1后缀运算符:[],(),.,->,++,--从左到右
2一元运算符:++,--,!,~,+,-,*,&,size_of从右到左
3类型转换运算:(int)从右到左
4乘除运算符:*,/,%从左到右
5加减运算符:+,-从左到右
6移位运算符:<<,>>从左到右
7关系运算符:<,<=,>,>=从左到右
8相等运算符:==,!=从左到右
9位与运算符:&从左到右
10位异或运算符:^从左到右
11位或运算符:|从左到右
12逻辑与运算符:&&从左到右
13逻辑或运算符:||从左到右
14条件运算符:?:从右到左
15赋值运算符:=,+=,-=,*=,/=,%=,&=,^=,|=,<<=,>>=从右到左
16逗号运算符:,从左到右

运算符优先级和结合律 c int *p[3]; // [],*,int:数组,里面是指针,指向int int (*p)[3]; // *,[],int:指针,指向数组,数组中是int int (*p)(int a); // *,(int a),int:指针,指向参数为(int a)的函数,函数返回int int (*p[3])(int a); // [],*,(int a),int:数组,数组中是指针,指向参数为(int a)的函数,函数返回int int(*(*p())[])(); // (),*,[],*,(),int:无参函数,返回一个指针,指向一个数组,数组中是指针,指向一个无参函数,函数返回int

[]运算级比*高

参考

  1. C语言运算符优先级
  2. C语言总结
  3. C复杂指针

评论已关闭