c巴拉巴拉 2023-09-09 08:09 采纳率: 87.5%
浏览 7
已结题

指针数组数组指针区别

int arr[]={1,2,3,4,5};
int arr1[]={1,2,3,4,5};
int arr2[]={1,2,3,4,5};
int* arr[]={arr,arr1,arr2};
//------------------------------------------------------
int (*p)[5]=arr;

两个不都一样吗,为什么还要分指针数组,数组指针,不都是从数组里拿元素吗
数组指针只能对应一个地址吗,可以写成

```
int (*p)[5]={arr,arr1,arr2};

```这样吗

  • 写回答

4条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-09 10:05
    关注

    【以下回答由 GPT 生成】

    指针数组和数组指针是两个不同的概念。

    指针数组是指一个数组,其元素都是指针。在C语言中,可以使用指针数组来存储多个指针,并且每个指针可以指向不同类型的数据。指针数组的声明方式为:type *array[length],其中type是指针的类型,array是指针数组的名称,length是指针数组的长度。

    数组指针是指一个指针,它指向一个数组。在C语言中,可以使用数组指针来操作数组,通过指针可以访问数组中的元素。数组指针的声明方式为:type (*pointerName)[length],其中type是数组中元素的类型,pointerName是数组指针的名称,length是数组的长度。

    根据你提供的代码,int arr[] = {1, 2, 3, 4, 5}; 定义了一个整型数组arr

    int *arr[] = {arr, arr1, arr2}; 定义了一个指针数组,其中的元素是整型指针,分别指向 arrarr1arr2 这三个数组。

    int (*p)[5] = arr; 定义了一个数组指针 p,指向 arr 这个数组, p 的类型是指针,指向类型是 int[5]

    所以,两者是不同的,用途也不同。

    回答你的问题,为什么要分指针数组和数组指针,以及它们的区别:

    1. 数组指针是一个指针,指向一个数组。它只能指向一个数组,并且指针本身是可变的,可以指向其他的数组。
    2. 指针数组是一个数组,其元素都是指针。每个元素指向不同的数据,可以指向不同类型的数据。指针数组本身是不可变的,数组元素是可变的。

    所以,它们的区别主要在于指针数组的元素可以指向不同类型的数据,而数组指针只能指向一个特定类型的数组。

    关于你提到的 int (*p)[5] = {arr, arr1, arr2};,这样的写法是不正确的。因为 int (*p)[5] 是一个数组指针,它只能指向一个 int[5] 类型的数组,不允许直接将一个指针的数组赋值给它。如果要实现类似的功能,可以考虑使用二维数组来代替指针数组的方式来实现。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月17日
  • 已采纳回答 9月9日
  • 创建了问题 9月9日

悬赏问题

  • ¥20 Github上传代码没有contribution和activity记录
  • ¥20 SNETCracker
  • ¥15 数学建模大赛交通流量控制
  • ¥15 为什么我安装了open3d但是在调用的时候没有报错但是什么都没有发生呢
  • ¥50 paddleocr最下面一行似乎无法识别
  • ¥15 求某类社交网络数据集
  • ¥15 靶向捕获探针方法/参考文献
  • ¥15 很抱歉出现错误word不能启动(24),如何解决?
  • ¥15 javascript下载网络图片
  • ¥15 excel中的填充效果 对应poi的哪个对象啊