C声明中的指针

C声明中的指针

参考

http://www.cdecl.org/
http://unixwiz.net/techtips/reading-cdecl.html

指针

int i;          declare i as int
const int i;    declare i as const int

----------

int * p;        declare p as pointer to int
int ** p;       declare p as pointer to pointer to int
int *** p;      declare p as pointer to pointer to pointer to int

const int * p;          declare p as pointer to const int
const int ** p;         declare p as pointer to pointer to const int
const int *** p;        declare p as pointer to pointer to pointer to const int

int * const p;          declare p as const pointer to int
int ** const p;         declare p as const pointer to pointer to int
int *** const p;        declare p as const pointer to pointer to pointer to int

const int * const p;    declare p as const pointer to const int
const int ** const p;   declare p as const pointer to pointer to const int
const int *** const p;  declare p as const pointer to pointer to pointer to const int

int * const * p;        declare p as pointer to const pointer to int
int * const ** p;       declare p as pointer to pointer to const pointer to int
int * const *** p;      declare p as pointer to pointer to pointer to const pointer to int
int ** const * p;       declare p as pointer to const pointer to pointer to int
int *** const * p;      declare p as pointer to const pointer to pointer to pointer to int

const int * const * p;          declare p as pointer to const pointer to const int
int ** const * const p;         declare p as const pointer to const pointer to pointer to int
const int ** const * const p;   declare p as const pointer to const pointer to pointer to const int

----------

int a[];            declare a as array of int
int a[10];          declare a as array 10 of int
int a[10][15];      declare a as array 10 of array 15 of int

int *a[10];         declare a as array 10 of pointer to int
int **a[10];        declare a as array 10 of pointer to pointer to int
int ***a[10];       declare a as array 10 of pointer to pointer to pointer to int

int *a[10][15];     declare a as array 10 of array 15 of pointer to int
int **a[10][15];    declare a as array 10 of array 15 of pointer to pointer to int
int ***a[10][15];   declare a as array 10 of array 15 of pointer to pointer to pointer to int

int (*a)[10];       declare a as pointer to array 10 of int
int (**a)[10];      declare a as pointer to pointer to array 10 of int
int (***a)[10];     declare a as pointer to pointer to pointer to array 10 of int

int (*a)[10][15];       declare a as pointer to array 10 of array 15 of int
int (**a)[10][15];      declare a as pointer to pointer to array 10 of array 15 of int
int (***a)[10][15];     declare a as pointer to pointer to pointer to array 10 of array 15 of int

int *(*a)[];        declare a as pointer to array of pointer to int
int **(*a)[];       declare a as pointer to array of pointer to pointer to int
int ***(*a)[];      declare a as pointer to array of pointer to pointer to pointer to int
int *(**a)[];       declare a as pointer to pointer to array of pointer to int
int *(***a)[];      declare a as pointer to pointer to pointer to array of pointer to int

----------

int f();        declare f as function returning int
int * f();      declare f as function returning pointer to int
int ** f();     declare f as function returning pointer to pointer to int
int *** f();    declare f as function returning pointer to pointer to pointer to int

int f(int);     declare f as function (int) returning int
int * f(int);   declare f as function (int) returning pointer to int
int ** f(int);  declare f as function (int) returning pointer to pointer to int
int *** f(int); declare f as function (int) returning pointer to pointer to pointer to int

int (*f) (int);         declare f as pointer to function (int) returning int
int (**f) (int);        declare f as pointer to pointer to function (int) returning int
int (***f) (int);       declare f as pointer to pointer to function (int) returning int

int * (*f) (int);       declare f as pointer to function (int) returning pointer to int
int ** (*f) (int);      declare f as pointer to function (int) returning pointer to pointer to int
int *** (*f) (int);     declare f as pointer to function (int) returning pointer to pointer to pointer to int

----------

int *(*(**foo[][8])())[];   declare foo as array of array 8 of pointer to pointer to function returning pointer to array of pointer to int
int *(*(**foo[5][8])())[];  declare foo as array 6 of array 8 of pointer to pointer to function returning pointer to array of pointer to int

----------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值