【带头学C++】----- 三、指针章 ---- 3.7 数组指针

3.7 数组指针      

1.数组指针的概述

     数组指针是一个指向数组的指针变量,是用来保存数组元素的地址。在C/C++中,数组名代表了数组的首地址,可以被解释为一个指向数组第一个元素的指针。因此,一个指向数组的指针可以通过数组名来获得。

例如:        int arr[5]={10,20,30,40,50};

//需求定义一个指针变量 保存 数组元素的地址

int *ptr;
ptr = &arr[0];

ptr = arr;        //arr作为地址 第0个元素的地址  arr==&arr[0]

ptr = &arr[3];  //也可以保存第三个元素的地址

    可以使用数组名arr来获取数组的首地址。然后,可以声明一个指向该数组的指针变量来保存这个地址:

int *ptr = arr; // 等价于 int *ptr = &arr[0];

        在上述代码中,ptr是一个指向整型的指针变量,通过将数组名arr赋值给ptrptr指向了数组arr的首元素,即arr[0]

       通过指针操作符*和索引,我们可以访问数组的元素。例如,要访问数组的第三个元素,可以使用以下语法:

int value = *(ptr + 2); // 等价于 int value = arr[2];

       在这里,ptr + 2将指针移动了两个长度为sizeof(int)的单位,即指向了数组的第三个元素。然后,通过解引用操作符*,我们可以获取该元素的值。

2 数组元素的指针变量 和数组名(作为地址)等价

     数组指针还可以用于传递数组给函数。在函数参数中,可以将数组声明为指针或使用指针作为参数类型来接收数组。这是因为数组名会自动转换为指向数组首元素的指针。

【带头学C++】----- 三、指针章 ---- 3.7 数组指针_第1张图片 

【带头学C++】----- 三、指针章 ---- 3.7 数组指针_第2张图片 

3 在使用中 [ ] 就是*()的缩写

【带头学C++】----- 三、指针章 ---- 3.7 数组指针_第3张图片

 为啥    arr ==&arr[0]?

&arr[0] == &*(arr+0) == arr+0 == arr

案例1: p[-1]的值是    30            p[-1] 实际是代表  *(p - 1)

int arr[5] = (10,20,30,40,50};   //*p指向的是40的位置

int *p = arr+3;

案例2: p[1]的值是    50                   p[1] 实际是代表  *(p + 1)

int arr[5] = (10,20,30,40,50};//*p指向的是40的位置

int *p = arr+3;

4 指向同一数组元素的两个

 int arr(5) = {10, 20,30,40,50};     int *p1 = arr;     int *p2 = arr+4;

 【带头学C++】----- 三、指针章 ---- 3.7 数组指针_第4张图片

1、两指针变量相减,等于它们间的元素个数

2、两指针变量赋值= p2=p1 它们指向同一处

3、两指针变量判断相等 == p2==p1 它们是否指向同一处

4、两指针变量判断大小   >   <   >=   <=   !=   

p1>p2    p1!=p2     判断它们的位置关系

5、两指针变量不能相加(!) p1+p2无意义

你可能感兴趣的:(C++从基础到抗大旗,c++,数据结构,开发语言,1024程序员节,c语言)