C语言数组指针和指针数组

在C语言中,“数组指针”和“指针数组”是两个不同的概念,尽管名字相似,但它们的用途和用法有明显的区别。下面我们详细解释一下这两个概念。

### 数组指针 (Pointer to an Array)

数组指针是指向一个数组的指针。它保存的是数组的地址。假设我们有一个数组:

```c
int arr[5] = {1, 2, 3, 4, 5};
```

定义一个指向这个数组的指针,我们可以这样做:

```c
int (*p)[5];
p = &arr;
```

在这里,`p`是一个指向包含5个整数的数组的指针。

- `*p` 是 `arr` 数组本身。
- `(*p)[i]` 是数组中的第 `i` 个元素。

例如,要访问数组的第一个元素,我们可以这样写:

```c
int firstElement = (*p)[0];
```

### 指针数组 (Array of Pointers)

指针数组是一个数组,其中每个元素都是一个指针。例如,我们可以有一个指针数组来存储多个字符串:

```c
char *arr[3];
arr[0] = "Hello";
arr[1] = "World";
arr[2] = "!";
```

在这里,`arr` 是一个包含三个指针的数组,每个指针指向一个字符串。

- `arr[i]` 是一个指向字符串的指针。
- `arr[i][j]` 是第 `i` 个字符串中的第 `j` 个字符。

例如,要访问第二个字符串的第一个字符,我们可以这样写:

```c
char firstCharOfSecondString = arr[1][0];
```

### 示例代码

以下是一个示例代码,展示了如何使用数组指针和指针数组:

```c
#include <stdio.h>

int main() {
    // 数组指针示例
    int arr[5] = {1, 2, 3, 4, 5};
    int (*p)[5] = &arr;  // 数组指针

    printf("数组指针示例:\n");
    for (int i = 0; i < 5; i++) {
        printf("%d ", (*p)[i]);
    }
    printf("\n");

    // 指针数组示例
    char *strArr[3];
    strArr[0] = "Hello";
    strArr[1] = "World";
    strArr[2] = "!";

    printf("指针数组示例:\n");
    for (int i = 0; i < 3; i++) {
        printf("%s ", strArr[i]);
    }
    printf("\n");

    return 0;
}
```

运行这段代码,将输出:

```
数组指针示例:
1 2 3 4 5 
指针数组示例:
Hello World !
```

希望这个解释能够帮助你理解C语言中的数组指针和指针数组的区别和用法。

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值