问题:输入m*n的矩阵,升序排序,并输出。
分析思路:动态分配数组空间,需要用到malloc函数,则需要调用#include <malloc.h>库函数。
这里面利用二级指针,指向二维数组,实现空间分配。
二级指针知识: 例如:int **a;其中*a为行,**a为列。相当于int a[2][3] = int[3] a[2]中,*a则为2行也就是两个一维指针,每个指针有3个空间。
关于分配空间:最开始 a分配的空间的指针类型为 int*,因为*a为a[0][0]的指针,*(a+1)为a[1][0]的指针。它指向每一行的首地址,每一行的指针。也就是说*a为一维数组的一个指针,而**a则为a[0][0]内的值。
例如:
a[2][3]={ {1,2,3},
{4,5,6} };
*a是指向a[0][0]位置的指针,*(a+1)指向a[1][0]位置的指针,依次类推。它是一个一维数组,类型为 int[3],即int*,因此分配指针a的空间时有 a = (int **)malloc(sizeof(int*)* 2);
而**a则是a[0][0]内,具体的值,为1. **a+1,为a[0][1]的值2, **(a+1)则为a[1][0]内的值4.
代码如下:
#include <stdio.h>
#include<malloc.h>
void shengxu(int **a, int m, int