我有一个关于优化的练习。我需要优化一个将图像旋转 45 度的程序。我知道使用指针访问数组更有效,因此我尝试了以下更改 - 原始代码:
RGB* nrgb = (RGB *)malloc(imgSizeXY*3);//3=sizeof(RGB)
//...
for (i=imgSizeY-1; i>=0; --i)
{
for (j=imgSizeX-1; j>=0; --j)
{
//...
int y=(i*imgSizeX+j);
nrgb[y].r = *imgInd; //*imgInd computed earlier
变化:
RGB* nrgb = (RGB *)malloc(imgSizeXY*3);//3=sizeof(RGB)
RGB* rgbInd = nrgb+imgSizeXY-1;
for (i=imgSizeY-1; i>=0; --i)
{
for (j=imgSizeX-1; j>=0; --j)
{
rgbInd->r=*imgInd;
--rgbInd;
但是当使用指针时,程序会产生错误的输出。我已经盯着它看了好几个小时了,但仍然不知道为什么。有任何想法吗?非常感谢!
最佳答案
通过指针访问数组元素和通过索引访问数组元素没有区别。您可以看到 if 生成汇编代码。索引表示法更简单。
关于c - 优化/使用指针访问数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14291493/