指针(二)

倖福魔咒の 提交于 2020-01-29 22:16:12

指针与数组

指向数组的指针
数组是内存中一块连续的区域,存储着相同类型的数据,在声明一个数组时,会开辟两个空间,一个用于保存数组元素,一个用来保存数组的第一个元素的地址,数组名就是用于保存数组第一个元素地址的指针。

  • 指向一位数组的指针
int a1[100];
int n;
n = *a1;  //n 为数组a1第一个元素的值
n = *(a1+5); // 数组a1的第6个元素

尽管指针与数组之间有密切的关系,但是指针类型变量是可以不断进行赋值,在程序运行过程中可以发成变化,数组名虽然是指针,但是是一种指针类型的常量,只能指向固定的内存地址,不能将一个指针值赋值给一个数组名,同时在程序运行的过程中是不能发生改变。

  • 指向多维数组的指针
    例如:二维数组相当于一个二维表格,二维数组具有首地址,行首地址,元素地址等,数组名代表首地址,称为二维数组的指针,行首地址是二维数组中某一行的首地址,每行相当于一个一维数组,元素地址是二维地址中具体的分量。
int a[4][5];
// a代表整个二维数组的首地址,*a代表是第0行首地址,a[0]代表第i行的首地址
  • 指向字符串的指针
char *str1 = "string1";

指针数组与指向指针的指针

  • 指针数组
    数组元素均为指针类型数据的数组。指针数组中的每个元素都相当于一个指针变量。
int *p[5]; //定义一个指针数组p,p有5个元素,每个元素都为int* 类型。
  • 指向指针的指针
    如果指针变量中保存的是另一个指针变量的地址,这样的指针变量称为指针的指针,也称为多级指针。
    在这里插入图片描述
int a =10;
int *p1 = &a;   //一级指针
int **p2 = &p1; //二级指针
int ***p3 = & p2;  //三级指针
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!