|
|
@ -0,0 +1,36 @@ |
|
|
|
数组指针 |
|
|
|
定义 int (*p)[n]; |
|
|
|
()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。 |
|
|
|
|
|
|
|
指针数组 |
|
|
|
定义 int *p[n]; |
|
|
|
[]优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1是错误的,这样赋值也是错误的:p=a;因为p是个不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它们分别是指针变量可以用来存放变量地址。但可以这样 *p=a; 这里*p表示指针数组第一个元素的值,a的首地址的值。 |
|
|
|
|
|
|
|
1.常量指针 |
|
|
|
定义:具有只能够读取内存中数据,却不能够修改内存中数据的属性的指针,称为指向常量的指针,简称常量指针。 |
|
|
|
|
|
|
|
声明:const int * p; int const * p; |
|
|
|
|
|
|
|
注:可以将一个常量的地址赋值给一个对应类型的常量指针,因为常量指针不能够通过指针修改内粗数据。只能防止通过指针引用修改内存中的数据,并不保护指针所指向的对象。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.指针常量 |
|
|
|
定义:指针常量是指指针所指向的位置不能改变,即指针本身是一个常量,但是指针所指向的内容可以改变。 |
|
|
|
|
|
|
|
声明:int * const p=&a; |
|
|
|
|
|
|
|
注:指针常量必须在声明的同时对其初始化,不允许先声明一个指针常量随后再对其赋值,这和声明一般的常量是一样的。 |
|
|
|
|
|
|
|
|
|
|
|
总结:主要看的就是const所处的位置。 |
|
|
|
|
|
|
|
1)const 在*前:表示const修饰的为所申明的类型。常量指针 常量指针是指指向常量的指针 |
|
|
|
int const *p1 = &b; //const 在前,定义为常量指针 |
|
|
|
|
|
|
|
2)const 在*后:表示const修饰的为指针。指针常量 指针常量是指指针本身是常量 |
|
|
|
int* const p2 = &c; // *在前,定义为指针常量 |
|
|
|
|
|
|
|
3)前*后均有:表示const同时修改类型和指针。指向常量的指针常量 |
|
|
|
|
|
|
|
|