【发布时间】:2014-03-08 11:47:35
【问题描述】:
我在 Google 上搜索了有关元胞数组和数组之间差异的主题,并认为元胞数组实际上存储了指向元素内容的指针。
运算符{} 就像C 中的&,对吧?
当{} 应用于变量{var_a,var_b} 时,我们会得到一个指向var_a 和var_b 的1*2“单元指针”数组? “单元格指针”有名称吗?
结构体数组是否采用类似的内存排列方式?
以matlab文档中的例子为例:
patient.name = 'John Doe';
patient.billing = 127.00;
patient.test = [79, 75, 73; 180, 178, 177.5; 172, 170, 169];
patient(2).name = 'Ann Lane';
patient(2).billing = 28.50;
patient(2).test = [68, 70, 68; 118, 118, 119; 172, 170, 169];
所以变量患者就像一个 2*3 单元格数组,除了字段名称?
patientcell{2,3}=...
我想知道下面的概念:
结构中的点运算符尊重其内容:
patient(1).test;
=> 患者细胞{1,3}
对吗?
【问题讨论】:
-
为了更深入地了解,我建议深入研究 MEX API 以了解 how the underlying
mxArrayworks 在幕后 - 即使是数字数组实际上也只存储指向其数据的指针(这就是复制的方式-write 机制有效,一方面) -
我认为为了完成写时复制,数值数组只存储指向起始元素的指针,这与元胞数组不同。您帖子中的链接是一个api列表,没有详细的实现。很遗憾,mathworks 隐藏了这些细节。