user-0 提问: C语言关于函数的问题 求教（新人）

回复:
user: user-1
content: 引用 9 楼 wowpH 的回复:不好意思，忘释放内存了。     ...      for (int i = 0; i < n; ++i) {         free(a[i]);     }     free(a);     return 0; }

user: user-0
content: 引用 9 楼 wowpH 的回复：#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<malloc.h>  void  PrintYHTriangle(int** a, int  n);/*用于打印杨辉三角形*/  int main() { 	int n; 	printf("Input n(n<=15):\n"); 	scanf("%d", &n);  	int** a; 	a = (int**)malloc(sizeof(int*) * n); 	for (int i = 0; i < n; ++i) { 		a[i] = (int*)malloc(sizeof(int) * n); 	}  	PrintYHTriangle(a, n); 	return 0; }  void PrintYHTriangle(int** a, int n) { 	int i, j; 	//输出列 	for (i = 0; i < n; i++) { 		//输出行 		for (j = 0; j <= i; j++) { 			if (i == 0 || j == i || j == 0) { 				a[i][j] = 1; 				printf("%5d", a[i][j]); 			} else { 				a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; 				printf("%5d", a[i][j]);//a[x][j]=a[x-1][j-1]+a[x-1][j] 			} 		} 		printf("\n"); 	} } 谢谢呀 我现在还不太会用指针

user: user-0
content: 引用 9 楼 wowpH 的回复：#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<malloc.h>  void  PrintYHTriangle(int** a, int  n);/*用于打印杨辉三角形*/  int main() { 	int n; 	printf("Input n(n<=15):\n"); 	scanf("%d", &n);  	int** a; 	a = (int**)malloc(sizeof(int*) * n); 	for (int i = 0; i < n; ++i) { 		a[i] = (int*)malloc(sizeof(int) * n); 	}  	PrintYHTriangle(a, n); 	return 0; }  void PrintYHTriangle(int** a, int n) { 	int i, j; 	//输出列 	for (i = 0; i < n; i++) { 		//输出行 		for (j = 0; j <= i; j++) { 			if (i == 0 || j == i || j == 0) { 				a[i][j] = 1; 				printf("%5d", a[i][j]); 			} else { 				a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; 				printf("%5d", a[i][j]);//a[x][j]=a[x-1][j-1]+a[x-1][j] 			} 		} 		printf("\n"); 	} } 谢谢呀 ..我还不太会指针

user: user-0
content: 引用 8 楼 user-2 的回复：和你用不用函数没关系  差别是 初始化 你正常输出的代码里面 main里面的数组 arr 有做全0初始化  异常输出的代码里面 main里面的数组 arr 没有做初始化 里面的数据的垃圾值 所以会出现 读取垃圾值的情况  导致出现中断   做初始化就没事了那个异常的是0初始化的 我刚刚改了一下 把异常的那个去掉初始化结果反而正常了 不知道为什么

user: user-1
content: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<malloc.h>  void  PrintYHTriangle(int** a, int  n);/*用于打印杨辉三角形*/  int main() { 	int n; 	printf("Input n(n<=15):\n"); 	scanf("%d", &n);  	int** a; 	a = (int**)malloc(sizeof(int*) * n); 	for (int i = 0; i < n; ++i) { 		a[i] = (int*)malloc(sizeof(int) * n); 	}  	PrintYHTriangle(a, n); 	return 0; }  void PrintYHTriangle(int** a, int n) { 	int i, j; 	//输出列 	for (i = 0; i < n; i++) { 		//输出行 		for (j = 0; j <= i; j++) { 			if (i == 0 || j == i || j == 0) { 				a[i][j] = 1; 				printf("%5d", a[i][j]); 			} else { 				a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; 				printf("%5d", a[i][j]);//a[x][j]=a[x-1][j-1]+a[x-1][j] 			} 		} 		printf("\n"); 	} }

user: user-2
content: 和你用不用函数没关系  差别是 初始化 你正常输出的代码里面 main里面的数组 arr 有做全0初始化  异常输出的代码里面 main里面的数组 arr 没有做初始化 里面的数据的垃圾值 所以会出现 读取垃圾值的情况  导致出现中断   做初始化就没事了

user: user-0
content: 引用 5 楼 wowpH 的回复：报错结果。发不了图片 第二种 Input n（n<=15） 7       1       1    1       1    2    1       1    3    3    1       1    4    6    4    1       1    5    10   10  5   Process returned -1073741819（0xC0000005） execution time：4.533 s Press any key to continue.

user: user-1
content: 引用 5 楼 wowpH 的回复:报错结果。建议 a 大小固定。如果 n 可能非常大，干脆直接动态申请内存。如下：  	int** a; 	a = (int**)malloc(sizeof(int*) * n);// 头文件stdlib.h 	for (int i = 0; i < n; ++i) { 		a[i] = (int*)malloc(sizeof(int) * n); 	}

user: user-1
content: 报错结果。

user: user-0
content: #include<stdio.h> void YHTriangle(int a[][15], int  n);//用于计算杨辉三角形*/ void  PrintYHTriangle(int a[][15], int  n);/*用于打印杨辉三角形*/ int main() {     int n,a[15][15];     printf("Input n(n<=15):\n");     scanf("%d",&n);     YHTriangle(a,n);     PrintYHTriangle(a,n);     return 0; } void YHTriangle(int a[][15],int n) {     int i,j;     //输入列     for(i=0;i<n;i++)     {         //输入行         for(j=0;j<=i;j++)         {             if(i==0 || j==i ||j==0)             {              a[i][j]=1;              }             else             {                 //递推式求值             a[i][j]=a[i-1][j-1]+a[i-1][j];              }         }         printf("\n");     }  } void PrintYHTriangle(int a[][15], int n) {     int i,j;     for(i=0;i<n;i++)     {         for(j=0;j<=i;j++)         {             printf("%5d",a[i][j]);         }         printf("\n");     }    }

user: user-0
content: 引用 2 楼 Throne? 的回复：#include<stdio.h> /*int  YHTriangle(int a[i][j] int  n);用于计算杨辉三角形*/ void  PrintYHTriangle(int a[][15], int  n);/*用于打印杨辉三角形*/ int main() {     int n,a[][15]={0};     printf("Input n(n<=15):\n");     scanf("%d",&n);     PrintYHTriangle(a,n);     return 0; } void PrintYHTriangle(int a[][15],int n) {     int i,j;     //输出列     for(i=0;i<n;i++)     {         //输出行         for(j=0;j<=i;j++)         {             if(i==0 || j==i ||j==0)             {             a[i][j]=1;             printf("%5d",a[i][j]);             }             else             {             a[i][j]=a[i-1][j-1]+a[i-1][j];             printf("%5d",a[i][j]);//a[x][j]=a[x-1][j-1]+a[x-1][j]             }         }         printf("\n");     }  } /*int YHTiangle(int a[i][j], int n) {     int i,j;              if(i == 0 || j==i+1)             {              a[i][j]=1;             }             else             a[i][j] = a[i-1][j-1]+a[i-1][j];         }     }     return a[i][j]; } */第二种

user: user-0
content: #include<stdio.h> /*int  YHTriangle(int a[i][j] int  n);用于计算杨辉三角形*/ void  PrintYHTriangle(int a[][15], int  n);/*用于打印杨辉三角形*/ int main() {     int n,a[][15]={0};     printf("Input n(n<=15):\n");     scanf("%d",&n);     PrintYHTriangle(a,n);     return 0; } void PrintYHTriangle(int a[][15],int n) {     int i,j;     //输出列     for(i=0;i<n;i++)     {         //输出行         for(j=0;j<=i;j++)         {             if(i==0 || j==i ||j==0)             {             a[i][j]=1;             printf("%5d",a[i][j]);             }             else             {             a[i][j]=a[i-1][j-1]+a[i-1][j];             printf("%5d",a[i][j]);//a[x][j]=a[x-1][j-1]+a[x-1][j]             }         }         printf("\n");     }  } /*int YHTiangle(int a[i][j], int n) {     int i,j;              if(i == 0 || j==i+1)             {              a[i][j]=1;             }             else             a[i][j] = a[i-1][j-1]+a[i-1][j];         }     }     return a[i][j]; } */

user: user-1
content: 看看你代码怎么写的。