有关指针的一些代码定义
定义一个指针
int *p;
p
是指向整型的指针。由于没有初始化操作,p的指向是未知的,这是一个野指针。
连续定义指针
int *p1, *p2;
p1
和p2
都是指针类型。如果写成
int *p1, p2;
p1
是指针类型,p2
是整型变量,不是指针。
指向指针的指针
int **p;
p
是一个指向指针的指针,它指向的指针指向一个整数。
常量指针(指向常量的指针变量)
const int *p;
int const *p;
上面两种写法等价,p
是一个指针,它指向的是整型常量。p指向的地址里的数据不能改变。
指针常量(指针是一个常量,指针不可改变)
int * const p;
p
是一个指针常量,指向的是整型变量。不能改变p
指向的对象(只能指向这个变量,不能指向别的)。对象的内容可更改。
函数指针
int (*f)(int, int);
f
是指向函数的一个指针,该函数的返回类型是整型,有两个整型参数。
数组指针
指向数组的指针。
int (*p)[10];
p
是一个指向含有十个整型元素的数组的指针。
指针数组
一个数组,数组里的元素是指针类型。
int *p[10];
p
是一个有十个整型指针的数组。
函数指针数组
一个数组,数组里的元素是指向函数的指针。
int (*p[10])(int, int);
[]
的优先级高于*
,所以p
是一个数组,数组里的元素类型是指针。p
是一个有十个指向返回值是整型,参数是两个整型的函数的数组。