首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++:二维数组与一维数组的区别

C++:二维数组与一维数组的区别
EN

Stack Overflow用户
提问于 2009-08-10 19:33:44
回答 3查看 2.4K关注 0票数 2

我有一个浮点数组rtmp1NMAX * 3,它用作rtmp1i,其中n是从0到2,i是从0到3* NMAX - 1。但是,我想将rtmp1转换为rtmp13 *3* NMAX。将这个新的一维阵列编址为rtmp13 *i+n是否等同于rtmp1i?提前感谢您的澄清。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-10 19:58:12

rtmp1i等同于rtmp1i*NMAX +n

请参见http://www.cplusplus.com/doc/tutorial/arrays/,其中NMAX是它们的宽度。

票数 4
EN

Stack Overflow用户

发布于 2009-08-10 19:41:50

是的,但是你这么做是想证明什么呢?rtmp1i很可能会有更好的执行时间,并且更容易阅读。

“实际上,你会想要使用rtmpi + 3*n”有什么区别?您所做的一切就是交换地址。

票数 0
EN

Stack Overflow用户

发布于 2009-08-10 19:54:21

我不确定它是否会违反一些别名保护规则。我的理解是,这是可以的,但我已经错了,整个领域有时会感到困惑,并且大胆地知道标准不同部分中的两个冲突规则中的哪一个优先。

例如:

代码语言:javascript
运行
复制
typedef float Point[3];

void f(float* tab, Point* pt)
{
   (*pt)[2] = 6;
   // I don't think the compiler can assume that (*pt)[2] isn't modified by
   tab[5] = 3.141592;

}

代码语言:javascript
运行
复制
// context which give a problem if I'm wrong.
float rtmp1[NMAX*3][3];
float *ptr = &rtmpl[0][0];
f(ptr, rtmpl[1]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1256768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档