1. 前言
1.1 指针的定义
我们使用*表示指针,例如
int *p; //定义一个指针P,指向的内容为int类型。
int *p[n]; //[]的优先级高于*,则p是一个长度为n的数组,数组内的元素为指针类型,指向的内容为int型。
int (*p)[n]; //指针p指向一个数组,数组内的元素为int类型。
int **p; //二级指针,指针p指向*p,仍然是一个指针,*p指向的内容为int型,一般用于函数的形参。
int (*p)(int); //指针p指向一个函数,函数的形参类型为int,返回值为int。
指针的值代表的是地址,是指向的内存区的首地址,指针所占用的空间只受系统寻址位数影响,如果是32位系统,则指针占用4个字节,如果是16位系统,则占用2个字节。
2. 指针的常用方法
- 代指一个变量
int a = 3;
int *p = &a;
*p = 4;
printf("%d", a); // a = 4
- 表示数组
int a[10];
int *p = a;
int i;
for (i = 0; i < 10; i++)
{
*p++ = i;
printf("%d", a[i]); // a[i] = i
}
- 指向结构体
struct PhoneParameter
{
int m_Length;
int m_Width;
int m_Height;
}PhPar;
PhPar st_MyPhPar = {
15, 7, 1};
int CalVolume(PhPar *pstPar)
{
int Vol;
Vol = pstPar->m_Length * pstPar->m_Width * pstPar->m_Height;
return Vol;
}
printf("%d", CalVolume(&st_MyPhPar)); //105
- 指向函数
int n = 6;
int array[n] = {
0,<