![](/notes/imgs/wechat-color.jpg)
本章知识点
发布时间:
指针
指针定义:
- 定义空指针:int *p=NULL;
- 定义并赋值: int a=5; int *p=&a;
- 定义并赋值: int *p=new(int); 申请一个空间给 p,*p 内容不确定
- 先定义,再赋值 :int a=5; int *p; p=&a;
指针操作:
- 已经赋值的前提:*p=20;
指针运算:
int a=1,b=2;
int *pa=&a,*pb=&b;
加法运算:int s=*pa+*pb;
乘法运算: int t=*pa**pb;
无类型指针
- 定义: void *p;
- 赋值: int a=10; p=&a;
- 使用:cout<<(int)p<<endl; //必须强制类型转换 ,如果类型错误,数据无效
数组指针
定义:
- 定义赋值: - int a[5],i,*pa=a;
- 定义赋值: - int a[5]; int *pa=a; //指向数组的指针
- 先定义,再赋值 :int a=a[5]; int *pa; pa=a;
使用:
- 下标法: pa[i] //访问 a 的数组元素
- 指针法: *(pa+i) //间接访问的方法来访问数组元素
- scanf("%d",a+i); // a+1 指某元素的地址 可写成 pa+i 和 &a[i]
- 指针访问数组 : printf("a[%d]=%d\n",i, (a+i)); // 可写成(pa+i)或 pa[i]或 a[i]
指针数组(高级用法)
- 定义 int *a=new int[n+1]; //向操作系统申请了连续的 n+1 个int型的空间
- 使用:a[1]+=a[2];