哪位C/C++大佬帮忙看看,为什么我在函数里输出正常,在函数外就不行?

发布于 2022-09-12 23:00:07 字数 1080 浏览 43 评论 0

这是一个求杨辉三角的代码,我在getRow()函数里可以得到正确结果,返回到主函数输出就一直不对。
image.png

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

int** getRow(int rowIndex,int* returnSize)
{
    int* C[rowIndex+1];
    int i,j;
    *returnSize= rowIndex + 1;
    for(i=1;i<=rowIndex;++i){
        C[i]=(int *)malloc(sizeof(int)*(i+1));
        C[i][1]=C[i][i]=1;
        for(j=2;j<i;++j){
            C[i][j]=C[i-1][j-1] + C[i-1][j];
        }
    }

    int** tri = C;
    for (int i = 1; i < *returnSize; i++) {
        for (int j = 1; j <= i; j++) {
            printf("%d ",tri[i][j]);
        }
        printf("\n");
    }

    return tri;
}

int main() {
    int returnSize;
    int* returnSizeP = &returnSize;
    int** tri = getRow(5,returnSizeP);

    printf("\n"); //删掉printf("\n");,下一段代码的输出结果又不一样。。。
    for (int i = 1; i < *returnSizeP; i++) {
        for (int j = 1; j <= i; j++) {
            printf("%d ",tri[i][j]);
        }
        printf("\n");
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

↘紸啶 2022-09-19 23:00:07

函数出栈之后,动态变量都被释放了

可以将函数内第一句改为 int** C=(int **)malloc(sizeof(int*)*(rowIndex+1));

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文