19.数组指针的概念及定义.md 1.9 KB
Newer Older
极客江南's avatar
极客江南 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
## 数组指针的概念及定义

- 数组元素指针

+ 一个变量有地址,一个数组包含若干元素,每个数组元素也有相应的地址, 指针变量也可以保存数组元素的地址
+ 只要一个指针变量保存了数组元素的地址, 我们就称之为数组元素指针
  ![](https://img-blog.csdnimg.cn/img_convert/69b98c6401a04bf8fce52a78c80b9565.png)

```c
    printf(%p %p, &(a[0]), a); //输出结果:0x1100, 0x1100
```

>+ 注意: 数组名a不代表整个数组,只代表数组首元素的地址。
>+ “p=a;”的作用是“把a数组的首元素的地址赋给指针变量p”,而不是“把数组a各元素的值赋给 p”

## 

## 指针访问数组元素

![](https://img-blog.csdnimg.cn/img_convert/13c0dd997ce619b1249220ce09610ad4.png)

```c
    int main (void)
{
      int a[5] = {2, 4, 6, 8, 22};
      int *p;
      // p = &(a[0]); 
      p = a;
      printf(%d %d\n,a[0],*p); // 输出结果: 2, 2
}

```

- 在指针指向数组元素时,允许以下运算:

+ 加一个整数(用+或+=),如p+1
+ 减一个整数(用-或-=),如p-1
+ 自加运算,如p++,++p
+ 自减运算,如p--,--p

![](https://img-blog.csdnimg.cn/img_convert/6c563fff4c62724055337604c2d31623.png)

>+ 如果指针变量p已指向数组中的一个元素,则p+1```指向```同一数组中的下一个元素,p-1```指向```同 一数组中的上一个元素。

- 结论: 访问数组元素,可用下面两种方法:

+ 下标法,  如a[i]形式
+ 指针法, *(p+i)形式

![](https://img-blog.csdnimg.cn/img_convert/e00312fbc775c04e2a449d7d8d473eb9.png)

- 注意:

+ 数组名虽然是数组的首地址,但是数组名所所保存的数组的首地址是不可以更改的

```c
  int x[10];
	x++;  //错误
	int* p = x;
	p++; //正确
```

## 



最后,如果有任何疑问,请加微信 **leader_fengy** 拉你进学习交流群。

开源不易,码字不易,如果觉得有价值,欢迎分享支持。