关于指针的辨析——指针,数组,数组指针,指针数组,函数指针,返回指针的函数

指针和数组的区别与联系:
数组名可以看作是指针常量

指针数组
函数指针 void (*f)(int *)
Attention: void *f(int *) declares f is a function
Because the order of operators
(void *) f(int *)

当遇见一个无比复杂的定义时,只要看括号最里面是什么即可,更准确地说,是看*最先运算的是什么操作
这就又涉及到操作符的运算顺序了,
以及操作符的作用对象:

OperatorsAssociativity
() [] -> . ++ --Left to Right
! ~ ++ -- + - * & (type) sizeofRight to Left
* / %Left to Right
+ -Left to Right
<< >>Left to Right
< <= > >=Left to Right
== !=Left to Right
&Left to Right
^Left to Right
``
&&Left to Right
`
?:Right to Left
= += -= *= /= %= &= ^= != <<= >>=Right to Left
,Left to Right

举个例子:

定义解释
char **argv;定义一个指向指针的指针,可以用来接收命令行参数。
int (*daytab)[13];定义一个指向包含13个整数的数组的指针,daytab指向该数组。
int (*comp)();定义一个指向返回整数函数的指针,comp指向该函数。
char (*(*x())[])();定义一个指向返回指向字符数组的指针的函数的指针,x指向该函数。此语句是函数指针的定义,它是一个指向返回字符数组的函数的指针。
char (*(*x[3])())[5];定义一个数组,数组的每个元素是指向函数的指针,该函数返回一个包含5个字符的数组。x是该数组的名称。此语句是函数指针数组的定义。
C Language StatementExplanation
char **argv;Pointer to a pointer to char, typically used for command line arguments.
int (*daytab)[13];Pointer to an array of integers with 13 elements, often used for representing a calendar.
int (*comp)();Pointer to a function that takes no arguments and returns an integer.
char (*(*x())[])();Function x returning a pointer to an array[] of pointers to functions returning char.
char (*(*x[3])())[5];Array[3] of pointer to function returning pointer to array[5] of char
  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值