指针:等同于地址,
定义:数据类型*指针名 int *p或int* p
* 号:1.定义指针的时候,类型说明符
2.通过*号 地址,可以访问到真实内存
3.四则运算的乘号
*号前两中情况怎么区分?
在指针定义的时候,表示类型说明。
&号:1.取地址符号
2.位操作符号
初始化:int *p=&a;
int main()
{
int a = 10;
int b = 20;
int* p;
int* p = &a;
*p = 100;//就是*p=a=100
p = &b;//b的地址替换了p原来的地址
*p = 200;//*p=b=200
int** pp = &p;//二级指针 pp 保存一级指针p的地址
*pp = &a;//*pp=p=&a
**pp = 1000;//**pp=*P=a=1000
*pp = &b;
**pp = 2000;//二级指针可参照一级指针去理解
return 0;
}
1.指针如何引用数组以及字符数组
1.1指针怎么指向数组
int arr[]={1,2,3};
int *p;
p=arr;
1.2指针+1,指针-1,指针-指针,指针+指针;
1.3如何通过指针的形式访问数组
1.4在函数传参的时候,数组会退化成为指针
数组名还表示数组首元素的地址
对于指针+1来说:加一个格子(对于指针来说,+1其实是加上它的类型,)
对于指针-1来说:向前走一个格子。
对于*2、/2、%2,都不允许
指针-指针:这两个指针如果在在同一个数组内,指针-指针代表这两个指针中间有多少个格子
指针+指针:无意义。
怎么访问数组内的元素值?
1.数组下标 arr[7] 7[arr]//可以这样写
2.指针解引用去访问 *(p+7) *(7+p) p[7] 7[p]//可以这样写