解释一下C语言杨辉三角代码

尤其是前三行,能画个图吗?谢谢啦

int** generate(int numRows, int* returnSize, int** returnColumnSizes){
    int **res = (int**)malloc(sizeof(int*) * numRows);
    *returnSize = numRows;
    *returnColumnSizes = (int*)malloc(sizeof(int) * numRows);

    for(int i=0; i < numRows; i++){
        res[i] = (int*)malloc(sizeof(int) * (i+1));
        (*returnColumnSizes)[i] = i+1;
        res[i][0] = 1;                                          //每行第一个和最后一个元素为1
        res[i][i] = 1;
        for(int j=1; j < i; j++){
            res[i][j] = res[i-1][j] + res[i-1][j-1];            //杨辉三角的性质
        }
    }

    return res;
}

找规律,每个数的上一行左边加右边的等于这个数