指针与数组
指向数组的指针
数组是内存中一块连续的区域,存储着相同类型的数据,在声明一个数组时,会开辟两个空间,一个用于保存数组元素,一个用来保存数组的第一个元素的地址,数组名就是用于保存数组第一个元素地址的指针。
- 指向一位数组的指针
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; //三级指针
来源:CSDN
作者:bai小c
链接:https://blog.csdn.net/qq_42708024/article/details/104108569