3.指针与指针类型
定义赋值:
int a=0; int *p1=&a;int **p=&P1;
操作:
1.对指针的操作--*对指针本身无意义
1.向高位移动(+): p+1,p++;
2.向低位移动(-): p-1,p--;
2.对指针所指空间的操作
1.取值: 一级取值:*p;(取的是p1的值),二级取值:**p;(取的是a的值)
2.赋值: *p=&p1;**p=5;
4.指针与字符串
定义赋值:
字符串:char *p="heima";//注意与字符数组定义的区别:指针定义时是常量
字符串数组:char *ps[3]={"heima","itcast","itheima"};//注意是数组
操作:
1.对指针的操作
1.向高位移动(+): p+1,p++;
2.向低位移动(-): p-1,p--;
2.对指针所指空间的操作--跟数组使用基本类似
1.取值:
取当前位的值: *p或p[0];
取下一位的值: *(p+1);或p[1](等效于:arr[当前角标+1]);
取上一位的值: *(p-1);或p[-1](等效于:arr[当前角标+1]);
2.赋值: !!!注意:常量不能赋值.(*这是说指针指向的空间,指针本身是可以赋值的);
如:char *p="itheima";
p[0]='m'//错误; 不能对指针所指空间的常量进行改变.
p="itcast";//正确. 指针本身并不是常量.里面存的地址可以变化.
5.指针与函数
函数的指针定义:
类型 (*指针名)(参数类型);
如:int (*p)(int);
表示如下函数的指针类型:
int add(int a){
return 0;
}
赋值:
指针名=函数名;
如:p=add;
操作:
1.调用函数:
指针名(实参);
如:p(5);
|
|