C++学习笔记十一之指针内容回顾

266 阅读2分钟

指针内容回顾

判断指针

  1. 判断定义的变量是指针还是数组?(主要看[])
  2. 如果定义的是数组.数组名前面表示数组的类型(去掉数组的大小) 数组名后面表示的数组的大小
  3. 如果是指针,判断是多级指针还是一级指针(看*号的数量)
  4. 如果是一级指针看是基本数据的指针,还是数组指针(必须有())
  5. 如果是多级指针,看指向的是多级指针还是一级指针(去掉一个*号)

指针的概念

  • 指针:数据类型地址
  • 概念:为了方便访问内存中内容,系统给每一个内存单元(字节)分配一个编号,该编号就称为地址,也就是指针.
  • 定义: 类型 指针变量名; 类型 *指针变量名;
  • 赋值方式:
    • 相同类型变量的地址
    • 相同类型的指针变量
    • 数组名
    • 字符串
    • 函数名
  • 指针运算符:&、*读取(写入数据时,看指针指向的类型)
  • 指针的偏移:p+1 1表示一个单位。一个单位多大,看指针指向的类型
  • 存储的方式:小端(低位存在低地址)和大端

练习代码

int n;
	//定义一个int型指针变量
	int *p=&n;//p的类型是int* p指向的类型 int
	int **p1=&p;//二级指针指向int型一级指针
	
	int **p2[3] = {p1};//大小为3指针数组:数组中每一个元素都是2级指针
	int m[3];//定义一个int大小为3的数组
	int(*p3)[3]=&m;//数组指针:指向一个大小为3的int型数组
	int* pm[3];
	int* (*p4)[3]=±//数组指针:指向大小为3的int*型的数组
	
	int*(*p5[4])[3] = {p4};//指针数组:数组中每一个元素都是数组指针
	
	int* (**p6[4])[3] = {&p4};//指针数组:数组中每一个元素的都是都是二级指针.该二级指针指向数组指针