Skip to content
本页目录

8.9 本章知识点

发布时间:

指针

指针定义:

  • 定义空指针: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];