哪位C/C++大佬帮忙看看,为什么我在函数里输出正常,在函数外就不行?
这是一个求杨辉三角的代码,我在getRow()函数里可以得到正确结果,返回到主函数输出就一直不对。
#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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
函数出栈之后,动态变量都被释放了
可以将函数内第一句改为
int** C=(int **)malloc(sizeof(int*)*(rowIndex+1));