问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

高分悬赏关于指针问题

发布网友 发布时间:2024-01-03 20:01

我来回答

6个回答

热心网友 时间:2024-08-28 14:48

程序可以等价于下面的这个,我把二维数组的初始化写开了,方便阅读
void main()
{
int s[4][5]=
{{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15},
{16,17,18,19,20}};
int (*ps)[5];

ps=s;
printf("%d\n",ps+2);
printf("%d\n",*(ps+3));
printf("%d\n",ps[0][6]);
printf("%d\n",s[0][6]);
printf("%d\n",*(ps+1)+3);
}

我觉得ps=s;的含义是把整形数组s的首地址给了指针ps,ps本身是一个一级指针,指向数组s的首地址,但是因为s是数组,所以我认为现在的ps已经是一个二级指针了,
:上面这些话,没有错

它指向4个一级指针,4个一级指针分别指向5个具体元素的地址,
:这句话错了,p等同于a,它指向一个拥有5个int型元素的一维数组的首地址

下面的几个printf语句我认为含义是这样的:
1.printf("%d\n",ps+2);我觉得这个ps+2好像没有实际意义吧,+2之后是不是已经越过这个数组,相当于ps的指针的实际地址+20×4×2的地址吧?
:并没有越过这个二维数组,ps+2相当于&a[2];
:ps+2,p实际上向后移动2*5*2个字节

2.printf("%d\n",*(ps+3));应该是ps首地址+20×4×3吧?
:ps+3相当于&a[3];*(ps+3))相当于a[3],它还是一个指针

3.printf("%d\n",ps[0][6]);按道理说二维最大只能是到4,但是我写了6居然没事,结果是7;不知道是为什么,还有ps[0][6]应该是指针地址啊,如果要输出具体的元素值已经是*ps[0][6]才对啊,但是为什么可以直接写呢?
:ps[0]是一个int*类型指针,它可以看出一维数组,元素个数没限制
:例如int a[2],*p=a;我们写p[3]也是可以的,只是它越界了,而ps还没越界
:楼主开始还说ps是二级指针,那么ps[0][6],刚好是个元素了
:*ps[0][6]才对,那ps是三级指针了

4.printf("%d\n",s[0][6]);同3一样越界了,怎么能正常输出3?
求高手一定要帮帮我,我知道如果我把这个搞糊涂了之后,我的指针就白学了,求高手一定要指点迷津啊,我上面的分析好像都是错的,但是我不知道为什么啊????
:同3,s[0][6]=s[1][1]=7

还有指针数组和二维数组指针之间到底是什么区别?
:区别大了
:指针数组,是一个数组啊,数组的元素都是指针
:二维数组指针,是一个指针啊,它指向的数组的地址

热心网友 时间:2024-08-28 14:44

高分呢?这可是很费脑子的~~~

热心网友 时间:2024-08-28 14:49

其实你的理解基本上是正确的,问题在于C编译器是没有越界检查的,因而即使数组越界,程序照样能正常输出,除非越界的地址为其它程序占用了,否则是不会告诉你出错的。

热心网友 时间:2024-08-28 14:45

分不够

热心网友 时间:2024-08-28 14:50

想得来,人家都已经回答了,浪费时间呀

热心网友 时间:2024-08-28 14:51

为了让您的提问被更多人关注,以获得最佳的回答,您可以一次追加悬赏20分以上(含20分),
将问题在分类下的“待解决”问题列表中显示为最新,类似于新提出的问题
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 为了让您的提问被更多人关注,以获得最佳的回答,您可以一次追加悬赏财 ... 衡量一项公共政策的成本—收益,可从( )等角度分析(多选)A.个人B.政 ... 为什么电容器的阻抗总是无穷大? 用竖式计算.(带“*”的要验算)*627+294=*736-189=473×4=730×6 聊城大学成人高考分数线2023年是多少分 上帝是个女孩 用中文翻译怎么唱 ...的“待解决”问题列表中显示为最新,类似于新提出的问题 这个要怎么... 一个 可以同时登陆手机和电脑吗 一年只能改一次吗? 老公为什么总是当着老婆娘家人的面发老婆脾气 咳嗽不能吃的水果有哪些 丰台区南苑街道邮政编码 我有辆车187分违章怎么处理 为什么中国女排得分后总要跑 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 在网上买的步步高点读机,点读自己从书店买来的课本怎么不行?到底怎么... 安全生产监督管理的基本特征有() 大学生在没有课的时候该如何充实自己呢? 荒野行动退游是什么意思 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 730乘以40如何列竖式 俄罗斯每年财政预算的几乎一半来源于石油和天然气的出口,中国财政主要... 形式是动态与静态的结合对吗 一个 可以同时登陆手机和电脑吗? 我用一个手机号登录了两个现在只能登一个哪个登不上怎么办 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 能不能将中药在晚上的时候煎上两次。然后将两次混合。晚上的时候先喝... ...就痒又发红,我每天都要化妆和熬夜,请问涂什么药呢?这个状况是不是过... 香菇丸和黄瓜放在一起怎样炒??? 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 极域电子教室怎样查看密码呢? 请问大家哪种电容的温度系数小? 没到一年怎么强制更改 脚上戴戒指是变态吗 ...三组对棱的长分别相等且依次为根号34,根号41,5,则此四面体的_百度知 ... 对棱等长的四面体外接球半径求法 如何自己制作方便面 ...已知AB=CD=5,AC=BD=34,AD=BC=41,求四面体的外接球半径 俄罗斯每年财政预算的几乎一半来源于石油和天然气的出口,中国财政主要... 处理提问的方式