数组指针和指针数组如何取值
时间: 2023-07-20 22:18:49 浏览: 117
数组指针和指针数组是两种不同的指针类型,它们的取值方法也不同。
数组指针是指向数组的指针,可以通过指针的方式访问数组元素。例如:
```
int arr[3] = {1, 2, 3};
int (*p)[3] = &arr; // 定义一个指向数组arr的指针
int x = (*p)[1]; // 取出arr[1]的值,等价于p[0][1]
```
指针数组是一个数组,其中每个元素都是指针类型,可以通过数组下标的方式访问指针元素指向的值。例如:
```
int a = 1, b = 2, c = 3;
int *arr[3] = {&a, &b, &c}; // 定义一个指针数组
int x = *arr[1]; // 取出第二个指针元素指向的值,等价于b
```
需要注意的是,数组指针和指针数组的类型声明中的括号是有区别的,数组指针中的括号用于指定指针指向的数组的类型,指针数组中的括号用于指定数组元素的类型为指针。
相关问题
数组指针取值为什么要引用两次
数组指针取值需要引用两次的原因是因为数组名本身就是一个指针,它存储的是数组第一个元素的地址。当我们对数组名进行解引用时,得到的是数组的第一个元素的值。但是如果我们只进行一次引用,得到的是一个指向数组第一个元素的指针,而不是元素的值。
因此,为了获取数组元素的值,我们需要对数组名进行两次引用。第一次引用获取指向数组第一个元素的指针,第二次引用获取该指针指向的值。
例如,对于一个整型数组 `int arr[5]`,要取得第一个元素的值,可以使用 `*arr` 或者 `arr[0]`。这两种方式都对数组名进行了两次引用,最终得到的是第一个元素的值。
数组指针取值为什么要解决两次
数组指针取值需要解决两次是因为数组名本身就是一个指针,它存储了数组的首地址。当我们使用数组名作为指针时,第一次解引用会得到数组的首地址,即数组的指针;而第二次解引用则会得到数组中具体的元素值。这是因为数组在内存中是连续存储的,通过解引用两次可以获取到指定位置的元素值。另外,解引用两次也可以看作是一种语法规定,用于确保我们获取到的是数组元素而不是数组指针本身。
阅读全文