[其它应用] 指针数组vs数组指针区别

[复制链接]
 楼主| 中国龙芯CDX 发表于 2025-6-25 12:40 | 显示全部楼层 |阅读模式
指针数组vs数组指针——双胞胎的区别
这两个长得很像,但作用完全不同:

  1. #include <stdio.h>

  2. int main() {
  3.     // 指针数组:是个数组,里面装的都是指针
  4.     char *arr1[] = {"苹果", "香蕉", "橙子"};

  5.     // 数组指针:是个指针,指向一个数组
  6.     int nums[] = {1, 2, 3, 4, 5};
  7.     int (*arr2)[5] = &nums;

  8.     printf("指针数组的内容:\n");
  9.     for(int i = 0; i < 3; i++) {
  10.         printf("%s ", arr1[i]);
  11.     }
  12.     printf("\n");

  13.     printf("数组指针指向的数组:\n");
  14.     for(int i = 0; i < 5; i++) {
  15.         printf("%d ", (*arr2)[i]);
  16.     }
  17.     printf("\n");

  18.     return0;
  19. }
复制代码



记住:指针数组是装指针的盒子,数组指针是指向盒子的手!

szt1993 发表于 2025-6-25 19:49 | 显示全部楼层
指针是地址,数组的数据只不过是指针数据而已
AdaMaYun 发表于 2025-6-25 23:10 | 显示全部楼层
指针数组、数组指针讲解的很详细
tpgf 发表于 2025-6-26 10:51 | 显示全部楼层
指针数组本质上是数组元素全是指针,而数组指针本质上是指针指向一个数组
Pretext 发表于 2025-6-26 14:19 | 显示全部楼层
指针数组其实就是二维数组吧?
OKAKAKO 发表于 2025-6-26 17:09 | 显示全部楼层
指针就是地址位置,数组就是数组
小夏天的大西瓜 发表于 2025-6-27 14:22 | 显示全部楼层
确实很容易混淆2个概念
星辰大海不退缩 发表于 2025-6-27 16:29 | 显示全部楼层
原理不出错就没有问题
一点点晚风 发表于 2025-6-28 11:32 | 显示全部楼层
指针数组是元素为指针的数组,本质是数组,如int *arr[5]表示含 5 个整型指针的数组。数组指针是指向数组的指针,本质是指针,如int (*p)[5]指向含 5 个整型元素的数组。二者类型和用途不同,指针数组用于存储多个指针,数组指针用于高效操作多维数组。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

335

主题

2540

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部