社区
C语言
帖子详情
*p[4]与(*p)[4]的迷惑;
gnimgnot
2006-06-14 07:20:15
最近一直在学着理解指针与数组名
但还总是搞混;
例如让一个指针指向一个二维数组
int a[3][4];
int (*p)[4]=a;/*这个是定义的一个一维数组,怎么指向一个二维数组的呢*/
int *p[4];/*这个是书上的指向数组的指针,这个应该怎么实现呢?*/
...全文
541
12
打赏
收藏
*p[4]与(*p)[4]的迷惑;
最近一直在学着理解指针与数组名 但还总是搞混; 例如让一个指针指向一个二维数组 int a[3][4]; int (*p)[4]=a;/*这个是定义的一个一维数组,怎么指向一个二维数组的呢*/ int *p[4];/*这个是书上的指向数组的指针,这个应该怎么实现呢?*/
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gnimgnot
2006-06-17
打赏
举报
回复
在int *p[4]中,p是数组名
*p又是什么呢?
而p和&p的值居然相同。。。
并且
int *p[3] = {a[0], a[1], a[2]};
这种初始化被报错
Z_Wing
2006-06-16
打赏
举报
回复
int *p[4]中的p是一个数组名,这个数组的元素是指向int类型对象的指针。注意这里的p不是指针,数组名与指针是不同的。
-------
就是一个指针数组。
int *p[3] = {a[0], a[1], a[2]}; //三个元素, 每个元素为一个指针.
可不可以指向不同的数组呢?
---------------------
不对。这里*p[3]是指针数组,不是数组指针。p是指针数组的首地址而不是一个指针。所以p是不能指向其它数组的。但是你可以给这个指针数组的元素赋不同的值。
gnimgnot
2006-06-15
打赏
举报
回复
抱歉,此贴无赏分
gnimgnot
2006-06-15
打赏
举报
回复
感谢楼上各位的热心解答
我恰好昨天也看到了一本书上说世界上只有一维数组。
而只是元素也可能是数组。
不过还是有一些细节不是很理解
按照以下两位朋友的说法
megaboy(飞天御剑流之杀神一刀斩),sinkileu(小心)
int *p[4]中的p是一个数组名,这个数组的元素是指向int类型对象的指针。注意这里的p不是指针,数组名与指针是不同的。
这就是指针的数组吗?
int *p[3] = {a[0], a[1], a[2]}; //三个元素, 每个元素为一个指针.
可不可以指向不同的数组呢?
sinkileu
2006-06-14
打赏
举报
回复
基本同意megaboy(飞天御剑流之杀神一刀斩),
另外, 赋值应该这样:
int a[3][4] = {. . .};
int (*p)[4] = a; //(*p)为一个含4个元素的数组
int *p[3] = {a[0], a[1], a[2]}; //三个元素, 每个元素为一个指针.
Z_Wing
2006-06-14
打赏
举报
回复
int a[3][4];
int (*p)[4]=a;/*这个是定义的一个一维数组,怎么指向一个二维数组的呢*/
先借用megaboy(飞天御剑流之杀神一刀斩) 的解释,int (*p)[4]中的p是一个指针,指向的对象是一个具有4个int类型元素的一维数组。
为了方便,你可以把int a[3][4]分解成两个数组理解,a[3]代表一个一维数组,而这个数组里的每个元素又是一个有四个元素的一维数组。那么,a[3]中每个元素存的就是每个有四个元素的一维数组的首地址了。那么当然可以用一个指向一维数组的指针p指向它们。这里p = a其实就是指向了第一个一维数组的首地址,不信你可以用p = a[0]来代替。对p的操作,就是对a[3]这个存数组首地址的一维数组操作,例如p+1指向了第二个数组的首地址。
如果你看了二维数组在内存中的存放规则就会很清楚了,例如p+1跳过了16个字节的内存空间,等等。
oosky2004
2006-06-14
打赏
举报
回复
Mark
hemiya
2006-06-14
打赏
举报
回复
同意megaboy(飞天御剑流之杀神一刀斩)
在int (*p)[4]中p是一个地址。在c中数组明就是一个数组的起始地址。
所以下面的方法,取得p的值都是一样的。
int (*p)[4]=a;
int (*p)[4]=&a[0][0];
megaboy
2006-06-14
打赏
举报
回复
全错。
int (*p)[4]中的p是一个指针,指向的对象是一个具有4个int类型元素的一维数组;
int *p[4]中的p是一个数组名,这个数组的元素是指向int类型对象的指针。注意这里的p不是指针,数组名与指针是不同的。
sharpdew
2006-06-14
打赏
举报
回复
在(*p)[4]中p是一个指向一个一维数组名的指针,而一维数组名也代表一个指针,所以它也就是一个指向指针的指针,也就可以指向一个二维数组。
极速小王子
2006-06-14
打赏
举报
回复
p数组本来就是指针,起元素指向一个地址或数组,有什么关系呢?
吃狼的豆腐
2006-06-14
打赏
举报
回复
mark
基于超局部模型与自抗扰ESO观测器的无模型预测电流控制改进策略研究(Simulink仿真实现)
内容概要:本文围绕“基于超局部模型与自抗扰ESO观测器的无模型预测电流控制改进策略”展开研究,提出一种结合超局部模型(ULM)与扩张状态观测器(ESO)的无模型预测电流控制(MFPCC)改进方法,旨在提升永磁同步电机(PMSM)电流环的动态响应性能与抗干扰能力。该策略利用超局部模型对系统行为进行局部逼近,避免依赖精确数学模型,同时引入自抗扰控制中的ESO实时观测并补偿系统内外部扰动,有效抑制参数摄动、负载变化及模型不确定性带来的影响。研究通过Simulink搭建完整的控制系统仿真模型,对传统MFPCC与所提改进策略进行对比分析,验证了新方法在电流跟踪精度、响应速度和鲁棒性方面的优越性。; 适合人群:具备电机控制、现代控制理论及Simulink仿真基础的电气工程、自动化及相关专业的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于高性能电机驱动系统中电流环控制器的设计与优化;②为无模型控制与自抗扰控制的融合应用提供技术参考;③支撑相关课题的仿真验证、论文复现与创新方法研究。; 阅读建议:建议读者结合Simulink仿真模型深入理解控制结构与参数整定过程,重点关注ESO的观测性能与扰动补偿机制,并可通过改变负载条件、参数偏差等工况进行鲁棒性测试,进一步掌握该改进策略的核心优势与适用边界。
编程教育基于Scratch的人体感应灯光系统设计:智能生活仿真编程教学与科创赛事应用方案
内容概要:本文围绕Scratch图形化编程平台,详细阐述了《人体感应灯光系统》这一贴近生活的AI科创作品的设计与教学应用。通过模拟真实智能家居中人体感应灯的工作原理,利用Scratch的侦测、逻辑判断、亮度特效调节等功能,实现了人物靠近自动亮灯、延时熄灭及环境亮度自适应等仿真功能。文章系统拆解了从场景搭建、核心逻辑设计、分层编程实现到调试优化的完整开发流程,并提供了基础版与进阶版可直接导入的源码,支持零基础快速上手与高阶创新拓展。同时构建了“基础—进阶—高阶”三层阶梯式教学体系,适配常规课堂、创客社团与赛事培优等多元教学场景,推动中小学AI教育的生活化、实践化与创新化发展。 适合人群:小学高年级至初中阶段学生,信息技术教师,创客教育从业者,以及参与青少年科创赛事的师生。 使用场景及目标:①作为中小学人工智能通识课程的教学案例,帮助学生理解智能感应与控制逻辑;②用于校内创客社团开展项目式学习;③支撑学生参加AI科创类赛事,完成高质量作品创作与答辩准备;④布置为课后综合实践作业,提升动手能力与科技素养。 阅读建议:建议结合提供的Scratch源码进行实践操作,在复现基础上尝试参数调优与功能扩展,如增加音效提示、多区域感应等,深化对编程逻辑与智能系统设计的理解。
delphi 13.1 unidac-12.0.1-d29pro.exe
delphi 13.1 unidac_12.0.1_d29pro.exe
易语言源码网络流量监控器
易语言源码网络流量监控器
带标注的辣椒病叶数据集,支持coco json,识别率95.9%,可识别三种病害和健康叶子,9916张图
预览数据集中的图片,标注信息,训练模型代码可点击查看我的博客链接:https://blog.csdn.net/pbymw8iwm/article/details/162031271 数据集使用方法和模型训练相关技术问题可免费咨询,主页获取作者联系方式
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章