浅谈指针与引用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaodu655/article/details/79313956

指针:故名思义为指向一块空间的地址。它里面存储的数值被解释成为内存里的一个地址。所以,指针也叫地址。
1.指针的类型:只要将指针声明语句中的指针名字去掉,剩下的即为指针的类型。
下面来进行依次查看。

1)、int *p; //指针类型为int*2)、char*p;.//指针类型为char*3)、int**p;//指针类型为int**4)、int (*p)[5];  指针类型为int (*)[];

还有很多,就不依次举例了。
2.关于指针的复杂类型。(其中有优先级的顺序等等因素),下面依次来看。

先从简单的一个整形变量来进行分析:如int p;//其为一个整型变量。
(1)、int *p;//p与*结合,说明了p为一个指针,指针所指向的内容为int型,即p为一个指向整型数据的指针。
(2)、int**p;//p与*结合,说明p为一个指针,再与*结合,说明指针所指向的元素是指针,之后再与int结合,
说明该指针所指向的元素是int型。p即为二级指针。
(3)、int p[];//p与[]结合,说明p为一个数组,再与int结合,数组中的元素为整型。
(4)、int *p[];//p先与[]结合,[]优先级高于*。所以p是一个数组,再与*结合说明数组中的元素是指针类型。
之后再与int结合,说明指针所指向的内容为整型。故p是一个由返回整型数据的指针组成的数组。(即为指针数组)
(5)、int(*p)[];//因为有括号,所以p先与*结合,说明p为一个指针,之后与[]结合,说明指针所指向的内容为一个
数组,之后与int结合,即可说明数组中的内容为int型,所以p是一个指向由整型数据组成的数组的指针。
(即为数组指针)
(6)、int p(int)//p先与()结合,说明p为一个函数,而括号内为int,所以该函数的参数为整型,之后再与最外面
的int结合,说明函数的返回值为int型。
(7)、int(*p)(int);//p先与*结合,说明p为一个指针,之后与()结合,说明p指向的是一个函数,括号内部为int,
说明函数的参数为int类型,而之后再与int结合,说明p是一个指向有一个整形参数且返回类型为int型的函数的指针。
(即为函数指针)。
(8)、int*(*p(int))[];//p先与()结合,观察括号内部为int,说明p为一个函数,函数的参数为int型,之后p再
与*结合,说明函数返回为一个指针,之后回到外层,与[]结合,说明函数返回的指针指向的是数组,之后再与*结合,
说明函数返回的指针指向的数组中的元素为指针型。最后与int结合,说明指针所指向的内容为int型。**所以p为参数为
整型的且返回一个指向由整型指针变量组成的数组的指针变量的函数。**

猜你喜欢

转载自blog.csdn.net/xiaodu655/article/details/79313956
今日推荐