我有一个浮点数组rtmp1NMAX * 3,它用作rtmp1i,其中n是从0到2,i是从0到3* NMAX - 1。但是,我想将rtmp1转换为rtmp13 *3* NMAX。将这个新的一维阵列编址为rtmp13 *i+n是否等同于rtmp1i?提前感谢您的澄清。
发布于 2009-08-10 19:58:12
rtmp1i等同于rtmp1i*NMAX +n
请参见http://www.cplusplus.com/doc/tutorial/arrays/,其中NMAX是它们的宽度。
发布于 2009-08-10 19:41:50
是的,但是你这么做是想证明什么呢?rtmp1i很可能会有更好的执行时间,并且更容易阅读。
“实际上,你会想要使用rtmpi + 3*n”有什么区别?您所做的一切就是交换地址。
发布于 2009-08-10 19:54:21
我不确定它是否会违反一些别名保护规则。我的理解是,这是可以的,但我已经错了,整个领域有时会感到困惑,并且大胆地知道标准不同部分中的两个冲突规则中的哪一个优先。
例如:
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;}
// context which give a problem if I'm wrong.
float rtmp1[NMAX*3][3];
float *ptr = &rtmpl[0][0];
f(ptr, rtmpl[1]);https://stackoverflow.com/questions/1256768
复制相似问题