为什么我们不在 Cs50 pset4 滤镜的灰度函数中使用指针?



为什么在helpers.c中不使用指针?我注意到check50已经通过了下面的代码,但是它如何转换变量"image"在filter.c吗?

`#include "helpers.h"
// Convert image to grayscale
void grayscale(int height, int width, RGBTRIPLE image[height][width])
{
float tmp;
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
tmp = (image[i][j].rgbtBlue + image[i][j].rgbtRed + image[i][j].rgbtGreen)/3.0;
image[i][j].rgbtBlue = (int)(tmp + 0.5);
image[i][j].rgbtRed = (int)(tmp + 0.5);
image[i][j].rgbtGreen = (int)(tmp + 0.5);
}
}
return;
}
`

这是因为当您设置image[i][j].rgbtBlue, image[i][j].rgbtGreen, image[i][j].rgbtRed.的值时,您正在写入文件

你的代码在双循环中的下面几行是做什么的?

image[i][j].rgbtBlue = (int)(tmp + 0.5);
image[i][j].rgbtRed = (int)(tmp + 0.5);
image[i][j].rgbtGreen = (int)(tmp + 0.5);

他们正在逐像素地更改位图图像文件。文件在辅助内存中. 它与变量指针或它们在主存中的地址无关。.

最新更新