鱼C论坛

 找回密码
 立即注册
查看: 2184|回复: 14

[已解决]数组指针到底是个什么东西

[复制链接]
发表于 2019-10-23 16:23:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个指针数组我能理解,就是由指针组成的数组,有用。
但是这个数组指针是个什么东西?写法这么复杂,光靠视频里的东西也不全明白,就我的理解是一个指向数组的指针,那不就是和给指针赋一个数组的值是一样的吗?那还非费这个劲干嘛啊?
还是说我理解错了啊?还有别的功能吗?
求各位大佬指点。。。
最佳答案
2019-10-23 17:09:12
int (*p)[8] , * q ;
        要说数组指针和普通指针的区别,p 指向由 8 个整型数数组构成的单元,所以,p ++ 的时候,指针跨度是 8 个整型数构成的存储单元,所以,p 应该指向末维为 8 的多维整型数组,适合数组元素的大段定位;q 只是普通的整型数指针,q ++ 的跨度只是一个整型数所占用的存储单元,适合挨个访问数组中的元素。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-23 16:31:27 | 显示全部楼层
已经说得很清楚了,2句话,自己多读几遍
指针数组:是一个数组,数组里面存入的指针变量
数组指针:是一个指针,该指针指向了一个数组
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-23 16:43:05 | 显示全部楼层
ba21 发表于 2019-10-23 16:31
已经说得很清楚了,2句话,自己多读几遍
指针数组:是一个数组,数组里面存入的指针变量
数组指针:是一 ...

我不是分不清啦,我只是不明白为什么还要用数组指针这个概念啊?直接用指针不可以吗?指针指向数组名和数组指针指向数组,两者之间有什么区别啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-23 16:59:57 | 显示全部楼层
老坚果 发表于 2019-10-23 16:43
我不是分不清啦,我只是不明白为什么还要用数组指针这个概念啊?直接用指针不可以吗?指针指向数组名和数 ...

指针是指针。数组指针是数组指针。
各有各的用处
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-23 17:08:55 | 显示全部楼层
ba21 发表于 2019-10-23 16:59
指针是指针。数组指针是数组指针。
各有各的用处

您这不是跟没说一样吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-23 17:09:12 | 显示全部楼层    本楼为最佳答案   
int (*p)[8] , * q ;
        要说数组指针和普通指针的区别,p 指向由 8 个整型数数组构成的单元,所以,p ++ 的时候,指针跨度是 8 个整型数构成的存储单元,所以,p 应该指向末维为 8 的多维整型数组,适合数组元素的大段定位;q 只是普通的整型数指针,q ++ 的跨度只是一个整型数所占用的存储单元,适合挨个访问数组中的元素。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-23 17:15:09 | 显示全部楼层
老坚果 发表于 2019-10-23 17:08
您这不是跟没说一样吗

我写本书给你好不好?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-23 17:18:29 | 显示全部楼层
jackz007 发表于 2019-10-23 17:09
要说数组指针和普通指针的区别,p 指向由 8 个整型数数组构成的单元,所以,p ++ 的时候,指针跨 ...

意思是输出数组指针指向的值的时候 输出的是整个数组的值 ,是这个意思吗?那末维是什么意思啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-23 17:20:11 | 显示全部楼层
ba21 发表于 2019-10-23 17:15
我写本书给你好不好?

抱歉抱歉 是我鲁莽了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-23 17:27:48 | 显示全部楼层
jackz007 发表于 2019-10-23 17:09
要说数组指针和普通指针的区别,p 指向由 8 个整型数数组构成的单元,所以,p ++ 的时候,指针跨 ...

对了 老哥 我还想问一下     

就是(*p2)[5] 这个是一个数组指针

和他对应的  *(*p2+i)  这是个什么意思啊?视频里说这个*p2是取地址的用法 可指针加*不应该是取值的意思吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-23 17:38:22 | 显示全部楼层
老坚果 发表于 2019-10-23 17:18
意思是输出数组指针指向的值的时候 输出的是整个数组的值 ,是这个意思吗?那末维是什么意思啊?

    int array[2000][5000][100][500][8]
    上面的定义就是末维为 8 的整型数组,无论有多少维,只要最后那一维是 8 个元素就是了。
    指向数组的指针所指向的数值仍然是指针(地址),如果要访问具体的数组元素还需要继续取值。

    研究一下下面的代码,对你也许会有所帮助:
#include <stdio.h>
main(void)
{
        int array[5][8] = {{1 , 2 , 3 , 4 ,5 , 6 , 7 , 8} ,\
                           {11 , 12 , 13 , 14 , 15 , 16 , 17 , 18} ,\
                           {21 , 22 , 23 , 24 , 25 , 26 , 27 , 28} ,\
                           {31 , 32 , 33 , 34 , 35 , 36 , 37 , 38} ,\
                           {41 , 42 , 43 , 44 , 45 , 46 , 47 , 48}} ;
        int (* p)[8]                                                ;
        p = array                                                   ;
        printf("array[3][6] = %d\n" , * (* (p + 3) + 6))            ;
}


   

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-23 18:50:06 | 显示全部楼层
本帖最后由 老坚果 于 2019-10-23 18:52 编辑
jackz007 发表于 2019-10-23 17:38
int array[2000][5000][100][500][8]
    上面的定义就是末维为 8 的整型数组,无论有多少维,只要 ...


老哥 你这个代码直接把我搞懵了啊 我理解了一下 有种懵懵懂懂抓住了点什么的感觉 但是理解的有点奇葩 所以我也不确定对不对啊。。。

老哥你我理解的对不对啊  :

*号并不仅仅用于指针的取值,他的根本作用在于降维的时候对某一区域值的定位 。

是这样吗哥?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-1 17:21:03 | 显示全部楼层
老坚果 发表于 2019-10-23 17:27
对了 老哥 我还想问一下     

就是(*p2)[5] 这个是一个数组指针

同是这个问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-5 17:13:30 | 显示全部楼层

这个我现在可以回复你了,星号实际上是解引用的意思。也就是说这个数组指针第一次解引用获得了它所指向数组的地址,而数组名就意味着地址,地址上再进行的运算就相当于在数组中挑选相应的数据,然后在进行解引用。我这帖子都结了,你回复别人看不到的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2019-11-8 02:54:02 | 显示全部楼层
老坚果 发表于 2019-11-5 17:13
这个我现在可以回复你了,星号实际上是解引用的意思。也就是说这个数组指针第一次解引用获得了它所指向数 ...

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 13:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表