CS50第4周篩選和“無效與指針”

我想用CS50制作一個灰度濾鏡。

首先-為什么我的代碼不工作,而我在GitHub上找到的代碼與我的代碼類似,但工作得很好。

這是我的密碼:

void grayscale(int height, int width, RGBTRIPLE image[height][width])
{
    int i = 0, j = 0;
    float rgbGray;
    while (i < height)
    {
        while (j < width)
        {
            rgbGray = (image[i][j].rgbtBlue + image[i][j].rgbtGreen + image[i][j].rgbtRed) / 3.00;
            rgbGray = round(rgbGray);
            image[i][j].rgbtBlue = rgbGray;
            image[i][j].rgbtGreen = rgbGray;
            image[i][j].rgbtRed = rgbGray;
            j++;
        }
        i++;
    }
    return;
}

這就是我在GitHub上找到的工作代碼

void grayscale(int height, int width, RGBTRIPLE image[height][width])
{
    float rgbGray;

    for (int i = 0; i < height; i++)
    {
        for (int j = 0; j < width; j++) {

            rgbGray = round( (image[i][j].rgbtBlue + image[i][j].rgbtGreen + image[i][j].rgbtRed)/ 3.00);

            image[i][j].rgbtBlue = rgbGray;
            image[i][j].rgbtGreen = rgbGray;
            image[i][j].rgbtRed = rgbGray;

        }
    }
    return;
}

Author: https://gist.github.com/ndiecodes

第二個問題是——為什么不需要指針。我的意思是,在講課中有一些信息,我們需要在需要更改元素值的情況下使用指針。這個函數沒有返回任何值-它只是VOID-所以我很好奇為什么第二個代碼工作正常

? 最佳回答:

使用while循環的代碼不會在循環后將j重置回零。因此,在第一行之后,不會對數組的每一行執行任何操作。

其次,這里沒有顯式的指針,但是C數組被有效地傳遞,就好像(松散地說)它們是指向數據的指針一樣,因此您對image的訪問會影響調用者看到的數據。

主站蜘蛛池模板: 精品一区狼人国产在线| 日韩免费无码一区二区三区| 国产精品无码一区二区在线观| 国产一区二区三区韩国女主播| 国产未成女一区二区三区| 国产产一区二区三区久久毛片国语| 成人免费区一区二区三区| 欧美日韩国产免费一区二区三区| 国精产品一区一区三区MBA下载| 国产精品久久久久一区二区三区| 久久免费视频一区| 国产乱码精品一区二区三区麻豆| 国产一区三区三区| 国产人妖在线观看一区二区| 国产精品一区在线麻豆| 国产精品毛片一区二区三区| 亚洲片一区二区三区| 国产成人精品一区二区三在线观看 | 少妇激情av一区二区| 国产在线观看一区精品| 中文字幕在线观看一区二区 | 久久久精品人妻一区二区三区蜜桃| 风流老熟女一区二区三区| 亚洲AV成人精品一区二区三区 | 波多野结衣高清一区二区三区 | 高清一区二区三区免费视频| 中文字幕无码一区二区三区本日| 国产三级一区二区三区| 国产精品亚洲一区二区三区久久 | 91video国产一区| 在线观看国产一区二三区| 国模私拍福利一区二区| 久久蜜桃精品一区二区三区| 亚洲.国产.欧美一区二区三区 | 日本一区二三区好的精华液| 国产成人免费一区二区三区| 天天爽夜夜爽人人爽一区二区| 亚洲av无码天堂一区二区三区| 中文字幕一区二区三区四区| 成人免费观看一区二区| 无码精品人妻一区|