数组指针数组怎么遍历出来
时间: 2023-07-13 13:24:42 浏览: 101
对于数组指针数组,我们可以使用多重指针的方式来遍历数组中的元素。下面是一个遍历二维数组的示例代码:
```c
#include <stdio.h>
int main() {
int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int (*p[3])[4] = {&arr[0], &arr[1], &arr[2]};
// 使用指针遍历数组
int **q = (int **)p; // 将指针数组转换为二级指针
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", *(*q + j)); // 通过指针访问数组元素
}
printf("\n");
q++; // 指向下一行
}
return 0;
}
```
在这个示例代码中,我们定义了一个 `arr` 二维数组和一个 `p` 数组指针数组,这两个数组的关系已经在之前的回答中讲解了。然后我们将 `p` 数组强制转换为二级指针 `q`,通过指针访问数组中的元素。对于每一行,我们使用 `q++` 将指针指向下一行的首地址,以实现遍历整个数组的目的。
相关问题
go 数组的指针如何遍历数组
在 Go 语言中,可以使用指针遍历数组。例如,对于一个名为 `arr` 的数组,可以这样遍历它:
```
for i := 0; i < len(arr); i++ {
val := *(*int)(unsafe.Pointer(uintptr(unsafe.Pointer(&arr[0])) + uintptr(i)*unsafe.Sizeof(arr[0])))
fmt.Println(val)
}
```
请注意,这种方法使用了 Go 语言的 `unsafe` 包,并且在 Go 语言中,使用指针并不是很常见。通常情况下,可以使用简单的循环语句或者内置的 `range` 语句来遍历数组。
例如,可以使用以下方法遍历数组:
```
for i, val := range arr {
fmt.Println(i, val)
}
```
或者:
```
for _, val := range arr {
fmt.Println(val)
}
```
用c语言定义一个二维数组,使用数组指针进行遍历
下面是用C语言定义一个二维数组,并使用数组指针进行遍历的示例代码:
```c
#include <stdio.h>
int main()
{
int arr[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};
int (*ptr)[4] = arr; // 定义一个数组指针,指向二维数组的第一个元素
// 使用数组指针进行遍历
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 4; j++)
{
printf("%d ", *(*ptr + j)); // 输出当前元素的值
}
ptr++; // 指向下一行的元素
printf("\n");
}
return 0;
}
```
程序输出结果如下:
```
1 2 3 4
5 6 7 8
9 10 11 12
```
在上面的示例中,我们首先定义了一个 $3\times4$ 的二维数组 `arr`,然后定义了一个数组指针 `ptr`,它指向二维数组的第一个元素 `arr[0]`,即第一行的数组。在遍历二维数组时,我们使用了数组指针 `ptr`,通过对 `ptr` 的操作实现对二维数组的遍历。在输出每个元素的值时,我们使用了双重指针,即 `*(*ptr + j)`,这样可以得到当前元素的值。在遍历完当前行后,我们将指针 `ptr` 指向下一行的元素,即 `ptr++`,这样就可以遍历到下一行的元素。
阅读全文