指针
1 形式
直接访问:直接利用变量的地址进行存取。
间接访问:通过其他变量找到该变量的地址,进而访问该变量的值。
每个变量的地址是指该变量所占储存单元的第一个字节的地址。
2 指针变量
// 指针变量所占储存空间与其所指向的变量类型无关。
// 一般定义形式为。
// 类型说明符 *指针变量
int *a
int a=6,*x=&a //初始化,指针x指向变量a
// 指针变量类型与所指向的变量类型相同
// x=NULL (空指针,对定义后暂不使用的指针变量赋空指针)
3 运算
取地址运算符:&
取内容运算符:*
两个为互逆运算符
4 指针与数组
4.1 一维数组
// 指针的移动指指针前后移动n个储存单元。
// 不同类型指针移动字节数不同(float型须移动4个字节,char型移动1个)
*p++ :等价于*(p++),先指向,p再加1
*++p:等价于*(++p),先加1,再指向
(*p)++:先指向,再指向的变量加1
++(*p):先指向的变量加1,再指向
// 指针相减表示相差的数组的元素个数。
// 可以用*(a+i)来访问数组元素,等价于a[i]
// p++会改变指针指向,p+1不改变,两者都是对指针进行加1运算。
// 指针的执行速度快。
4.2 二维数组
等价于一个一维数组,数组中的每一个元素都是一个一维数组。
5 指针与字符串
指针输出字符串是从指针指向的数组元素开始依次向后输出,直到遇到’\0’为止。
通常用 指针!=‘\0’ 来判断字符串结束的位置。
6 指针与函数
形参用指针可以提高程序的运行效率
指针型函数:
//格式:
类型说明符 *函数名(形参表)
{
... //函数体
}
调用函数的两种方法:
1 直接用函数名 hanshu(a,b)
2 通过函数指针 (*函数指针名)(实参表)
7 指向指针的指针
类型说明符 **指针变量名;
8 指针数组
类型说明符 *数组名[正整型常量表达式1],...[正整型常量表达式n];
9 行指针
类型说明符 (*指针变量名)[长度];