️c语言指针声明整理
一、常见声明
int a
:声明a是一个整形变量。
int const a
:声明一个不可改变的常量a。
int *a
:可以理解为*a
是一个整形,所以a就是指向整形的一个指针。
int **a
:**a
是一个整形,则a就是一个指向*a
的一个指针。
需要注意的是int *a,b
,这样声明后只有a是指针。
int const *p
:p表示一个指向不可改变的整形常量的指针。
int *const p
:声明一个不可改变的指针,指向一个可变的整形变量。
二、与函数声明结合
int f()
:声明了一个函数f(此处采用的是旧式声明,不提供形式参数)。
int *f()
:此处f()
优先级高,先进行结合,所以f
表示一个返回指向整形的指针的函数。
int (*f)()
:此处*f
先发生了结合,对其进行函数求值后会返回一个整形,所以f
代表的是一个指向返回整形的函数的函数指针。
int *(*f)()
:声明了f
为一个指向一个返回整形指针的函数的指针。
三、与数组结合
int a[]
:声明一个整形数组。
int *a[]
:下标操作符优先级更高,声明一个数组,里面的内容都是指向整形的指针。
int (*a[])()
:a表示一个函数指针数组,每一个都指向返回整形的一个函数。