#pragma mark - 8.指针的存储,指针是什么?指针类型,指针类型,指针运算,const关键字
8.指针的存储,指针是什么?指针类型,指针运算,const关键字
1\指针的存储:指针用来保存另外一个变量的地址
2\地址就是指针,指针就是地址
3\指针类型
1>基本数据类型指针:int *p......等
2>结构体指针:指向结构体的指针 struct Student *myStudentP;
3>数组指针:指向数组的指针:通过指针操作数组中的元素(-----五种遍历数组方式)
4>函数指针:指向函数的指针: void(*sumP)(int v1, int v2);(PS:与OC中的block相似)
补充:文件指针 FILE *P
拓展:OC中的指向对象的指针
4\指针运算:
1>指针与整数之间的运算
指向数组的指针,通过与整数的加减运算操作数组的元素(指针遍历数组)
"指针 + 1 == 指针的值 + sizeof(所指向的元素的数据类型)"
2>指针与指针之间的运算
只能做减法运算:代表两个指针指向的变量之间相差多少个单位变量(前提:这两个指针必须指向同一个数组的元素)
3>指针与指针之间的比较运算
它可以判断两个指针指向的变量的地址,谁在高地址,谁在低地址
也可以使用 "==" "!=" 判断两个指针指向的地址是不是同一个地址
5\const关键字:
1>修饰基本数据类型和数组:变量的值不能改变,数组元素的值不能修改
2>修饰指针: 常量指针: const在*号的左边,无法通过指针修改指向变量的值,但可以改变指针变量的指向(值)。
指针常量:const在*号的右边,指针的指向(值)不能修改,指针指向的变量的值可以修改
*号左边和右边都有const的时候,既不能修改指针的值,也不能修改指针指向的变量的值
补充:使用场景--当某些数据是固定的,在整个程序运行期间都不会发生变化,并且也不希望别人修改,const修饰
当函数的参数是1个指针的时候,为了防止函数的内部修改实参变量值,const修饰
#pragma mark - |
|