鱼C论坛

 找回密码
 立即注册
查看: 918|回复: 8

[已解决]数组指针的问题

[复制链接]
发表于 2022-2-17 10:24:44 | 显示全部楼层 |阅读模式

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

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

x
int array[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int (*p)[3] = (int (*)[3])&array;

这两句的意思是什么啊?哪位大神讲解一下。
我的理解:
(int (*)[3])&array这句话是将array这个数组的首地址变成一个指向三个数组的指针
再将array这个地址赋值给p,那么左右两边不就表示的是同一个数组指针了。
最佳答案
2022-2-17 14:50:51
youxixingzhet 发表于 2022-2-17 14:25
大佬 我还有一个问题想问一下
(int (*)[3])&array 这句话的意思是把&array这个数值定义成一个含有三个元 ...

可以这么说,但我认为
&array这个数值强制转换成一个一维含有三个元素的二维数组的指针
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-17 10:58:51 | 显示全部楼层
本帖最后由 jhq999 于 2022-2-17 11:04 编辑

p是一维是3的二维数组的int类型的指针,array是一维数组int类型的指针,它们和&array的值是一样的,类型不同是给编译器看的,所以值虽然相同为了让编译器看懂一定要按编译器规矩来写,要不然编译器看不懂就通不过编译
无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-17 11:36:36 | 显示全部楼层
jhq999 发表于 2022-2-17 10:58
p是一维是3的二维数组的int类型的指针,array是一维数组int类型的指针,它们和&array的值是一样的,类型不 ...

数组指针首地址赋值给数组指针 形成的二维数组嘛??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-17 12:45:47 | 显示全部楼层
youxixingzhet 发表于 2022-2-17 11:36
数组指针首地址赋值给数组指针 形成的二维数组嘛??

可以这么理解,等你学完c,了解一下汇编里的循环就知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-17 14:18:36 | 显示全部楼层
jhq999 发表于 2022-2-17 12:45
可以这么理解,等你学完c,了解一下汇编里的循环就知道了

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

使用道具 举报

 楼主| 发表于 2022-2-17 14:25:52 | 显示全部楼层
jhq999 发表于 2022-2-17 12:45
可以这么理解,等你学完c,了解一下汇编里的循环就知道了

大佬 我还有一个问题想问一下
(int (*)[3])&array 这句话的意思是把&array这个数值定义成一个含有三个元素的数组的指针吗?
然后再把 &array这个数值赋值给指针P对不???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-17 14:50:51 | 显示全部楼层    本楼为最佳答案   
youxixingzhet 发表于 2022-2-17 14:25
大佬 我还有一个问题想问一下
(int (*)[3])&array 这句话的意思是把&array这个数值定义成一个含有三个元 ...

可以这么说,但我认为
&array这个数值强制转换成一个一维含有三个元素的二维数组的指针
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-17 15:06:01 | 显示全部楼层
jhq999 发表于 2022-2-17 14:50
可以这么说,但我认为
&array这个数值强制转换成一个一维含有三个元素的二维数组的指针

大佬,乍一看确实感觉可以是一个二维数组
但是 仔细推敲我还是不明白为什么创建了一个一位数组再将它的起始地址强制转换为int(*)[3]型再赋值给int(*p)[3]就成为二维数组了
你看哈 :&array这个数值就是array数组的起始地址 然后定义成一个含有三个元素的数组指针 此时array的地址就是这个数组指针的地址 再把array这个指针赋值给p 那不应该p指针和array指针地址相同嘛?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-17 17:59:15 | 显示全部楼层
youxixingzhet 发表于 2022-2-17 15:06
大佬,乍一看确实感觉可以是一个二维数组
但是 仔细推敲我还是不明白为什么创建了一个一位数组再将它的 ...

没错,地址相同,内容也相同,一个是用二维数组表达出来,一个是用一维数组表达出来

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-30 19:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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