下面程序中g[]和g[][]都可以使用,g到底是一维数组还是二维数组?

laomashitu 2011-08-19 06:44:43
double *ppTmp[8];
double (*g)[8] = new double[8][8];
……
for(i=0;i<nx;i++)
{
ppTmp[i]=g[i];
}
...全文
181 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
jernymy 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 whuqin 的回复:]
g是一维数组,里面的元素是double*,指向一块保存有doule元素的内存区。所以可以看成二维数组。
[/Quote]
++
Jade0709 2011-08-20
  • 打赏
  • 举报
回复
g是数组指针,数组指针应该与指针数组相区别。
double (*g)[8]:定义了一个指针,指向的单元为8个double型,所以g的步长为8*sizeof(double)
double *g[8]:定义了一个有8个元素的数组,数组的元素是指向double型数据的指针。

这样来看,问题中定义的g,用作g[i]时其本质是表示一个指向首地址为g+i*8*sizeof(double)长度为8*sizeof(double)的一片内存的指针,用作g[i][j]其本质是内存地址为g+(i*8+j)*sizeof(double)中的内容。
rein07 2011-08-20
  • 打赏
  • 举报
回复
其实只要知道指针及指向的内容就知道哪些是一维数组,哪些是多维数组
modicum_lf 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 jernymy 的回复:]
引用 9 楼 whuqin 的回复:
g是一维数组,里面的元素是double*,指向一块保存有doule元素的内存区。所以可以看成二维数组。

++
[/Quote]
++
hackbuteer1 2011-08-20
  • 打赏
  • 举报
回复
g是一维数组,里面的每个元素都指向一个double * 元素的存储区,就是又指向一个含8个double的一维数组

,相当于二维数组
wizard_tiger 2011-08-20
  • 打赏
  • 举报
回复
9楼正解!
Jade0709 2011-08-20
  • 打赏
  • 举报
回复
指针和数组是不能混为一团的,虽然有的时候用起来形式是一样的。
Cql_liliang 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jxiaoshen 的回复:]
g是这样的一个数组:第i个元素对应于二维数组的第i行
[/Quote]

乱说,g不是一个数组, 而是一个指向数组的指针!!
g759281 2011-08-20
  • 打赏
  • 举报
回复
很好 谢谢
JiangXiang 2011-08-20
  • 打赏
  • 举报
回复
g到底是一维数组还是二维数组?

g是指针!
等待升级 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 laomashitu 的回复:]
double *ppTmp[8];
double (*g)[8] = new double[8][8];
[/Quote]
1.数组。元素为指针
2.指针。指向 含8个double的一维数组

++时 偏移不一样
1.偏移一个指针的长度(4字节)
2.偏移一个数组长度(即8*8)
vcf_reader 2011-08-19
  • 打赏
  • 举报
回复
不管几维,内存都按照一维处理
cao_julians 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 whuqin 的回复:]
g是一维数组,里面的元素是double*,指向一块保存有doule元素的内存区。所以可以看成二维数组。
[/Quote]
为什么有那么多人将g[]形式理解为数组呢?
g[i]只是*(g+i)的另一个指针表达形式而已!
春文秋武 2011-08-19
  • 打赏
  • 举报
回复
g是一维数组,里面的元素是double*,指向一块保存有doule元素的内存区。所以可以看成二维数组。
CJacky++ 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pathuang68 的回复:]
其实从根本上来讲,所有的多维数组都是一维数组。
[/Quote]
++++
春文秋武 2011-08-19
  • 打赏
  • 举报
回复
g是一维数组,里面的元素是double*,指向别的double元素。所以可以看成二维数组。
cao_julians 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jxiaoshen 的回复:]
g是这样的一个数组:第i个元素对应于二维数组的第i行
[/Quote]
概念错误,g是一指针变量,一个!
至善者善之敌 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pathuang68 的回复:]
其实从根本上来讲,所有的多维数组都是一维数组。
[/Quote]

++1,所以居士那天说的两种方法还是建议用第一种,哈哈
Jxiaoshen 2011-08-19
  • 打赏
  • 举报
回复
g是这样的一个数组:第i个元素对应于二维数组的第i行
cao_julians 2011-08-19
  • 打赏
  • 举报
回复
g即不是一维数组,也不是二维数组。它是指向8元素数组的指针。
g[0],g[1] 等指向了二维数组的第0行,第1行
g[0][0],g[1][0]等则是行中的元素。
=========================
仔细看看指针表达式部分的知识
加载更多回复(2)
内容概要:本文介绍了一种基于PSO-RNN-GAN混合智能算法的无人机三维路径规划模型,结合粒子群优化算法(PSO)的全局搜索能力、循环神经网络(RNN)的时序建模优势以及生成对抗网络(GAN)的路径生成能力,在MATLAB平台上实现了复杂三维环境高效、平滑、低能耗且具备动态避障能力的路径规划系统。文详细阐述了模型架构,包括三维环境建模、PSO路径搜索、RNN路径平滑、GAN路径创新生成、多目标损失优化及自适应调度机制,并提供了关键模块的代码示例与仿真可视化方法,支持多无人机协同扩展,具备良好的泛化性与工程应用前景。; 适合人群:具备一定机器学习与优化算法基础,从事无人机导航、智能控制、路径规划相关研究或开发工作的科研人员与工程师,尤其适合研究生、算法研发人员及自动化、航空航天领域从业者; 使用场景及目标:①应用于复杂三维环境下的无人机自主导航路径规划,实现高效避障与节能飞行;②为动态障碍、多目标优化、路径平滑性与动力学约束等问题提供综合性解决方案;③作为智能交通、多智能体协同、自动驾驶等领域路径决策系统的参考模型; 阅读建议:此资源以MATLAB实现为核心,包含模型设计与部分代码,建议读者结合文架构图与代码片段搭建仿真环境,逐步复现并调试各模块功能,重点关注多算法融合机制与损失函数设计,深入理解PSO、RNN、GAN在路径规划的协同作用。
内容概要:本文介绍了一种基于两阶段鲁棒优化算法的微网多电源容量配置方法,并提供了完整的Matlab代码实现。该方法针对微电网风能、光伏、储能等多种分布式电源的容量规划问题,充分考虑了可再生能源出力与负荷需求的不确定性,通过构建两阶段鲁棒优化模型,在第一阶段确定电源的最优配置容量,在第二阶段应对实际运行的不确定因素,从而提升系统运行的经济性与可靠性。文详细阐述了模型构建过程、不确定性集合的设定、列与约束生成(C&CG)算法的求解流程,并结合算例验证了所提方法的有效性和鲁棒性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事微电网、综合能源系统、可再生能源集成等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 学习和掌握两阶段鲁棒优化理论在电力系统规划的具体应用;② 理解并复现微网多电源容量配置的建模与求解全过程;③ 将该方法迁移应用于类似的能源系统优化问题,如储能配置、配电网络规划等。; 阅读建议:建议读者结合Matlab代码逐行理解算法实现细节,重点关注不确定性建模与C&CG算法的迭代求解过程,有条件者可尝试修改算例参数或引入新的电源类型以深化理解和应用能力。

70,039

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧