鱼C论坛

 找回密码
 立即注册
查看: 1804|回复: 3

字符指针,指针字符

[复制链接]
发表于 2023-3-22 13:07:39 | 显示全部楼层 |阅读模式

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

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

x
若有定义:int t[3][3],*pt[3],k;则执行语句for(k=0;k<3;k++),pt[k]=t[k];后,以下选项中能正确表示t数组元素地址的表达式是()
A.&t[3][2]
B.*pt[2]
C.*(pt+1)
D.&pt[2]


有人能解释下数组指针跟指针数组的区别吗,我的理解是数组指针就是一行存放,指针数组是竖着存放,不太能理解为什么(*p)[4]时,*(p+1)就是地址,分不清什么时候是值,什么时候是地址


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

使用道具 举报

发表于 2023-3-22 13:19:34 | 显示全部楼层
在执行语句for(k=0;k<3;k++),pt[k]=t[k];之后,pt数组中存储了int类型的指针,每个指针指向t数组的每一行。因此,可以使用指针数组中的指针来访问t数组的元素。

根据上述定义,选项B.*pt[2]可以正确表示t数组的第三行第一个元素的值,因为pt[2]指向t数组的第三行,*pt[2]解引用这个指针,访问这一行的第一个元素。

选项A.&t[3][2]是错误的,因为t数组的最后一行和最后一列的下标都是2,因此t[3][2]超出了t数组的边界。

选项C.*(pt+1)是错误的,因为(pt+1)指向t数组的第二行,而不是元素的地址。

选项D.&pt[2]是错误的,因为pt是一个指针数组,&pt[2]表示指向pt数组的第三个指针的指针,而不是t数组元素的地址。

关于数组指针和指针数组的区别:数组指针是指向数组的指针,可以用来访问数组中的元素,而指针数组是一个数组,其中的每个元素都是指针。因此,数组指针和指针数组的本质区别在于它们所指向的对象是不同的。

对于(*p)[4]这样的声明,p是一个指向含有4个int类型元素的数组的指针。因此,*p是一个含有4个int类型元素的数组,*(p+1)指向p所指向的数组的下一个数组,即地址为p+sizeof(int) * 4。在这种情况下,*操作符用于解引用指向数组的指针,而+操作符用于计算指针的偏移量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-20 12:11:42 From FishC Mobile | 显示全部楼层
isdkz 发表于 2023-3-22 13:19
在执行语句for(k=0;k

但是题目是要求表示数组元素的地址,C项是表示二维数组的第二行首地址,而第二行元素的首地址不就是第二行第一个元素的地址吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-20 12:13:34 From FishC Mobile | 显示全部楼层
B是取得数组元素吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 20:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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