欢迎阅读 for (j=0; j<5; j++) { a[i][j] = tmp ++; } } printfArray411((int *)a, 15); system(\} 4.2.5多维数组做函数参数技术推演 1、C语言中只会以机械式的值拷贝的方式传递参数(实参把值传给形参) int fun(char a[20], size_t b) { ? ?printf(\} 原因1:高效 原因2: C语言处理a[n]的时候,它没有办法知道n是几,它只知道&n[0]是多少,它的值作为参数传递进去了 虽然c语言可以做到直接int fun(char a[20]),然后函数能得到20这个数字,但是,C没有这么做。 2、二维数组参数同样存在退化的问题 二维数组可以看做是一维数组 二维数组中的每个元素是一维数组 二维数组参数中第一维的参数可以省略 void f(int a[5]) ====》void f(int a[]); ===》 void f(int* a); void g(int a[3][3])====》 void g(int a[][3]); ====》 void g(int (*a)[3]); 3、等价关系 数组参数 等效的指针参数 指针 char* 指针的指针 char **a 一维数组 char a[30] 指针数组 char *a[30] 二维数组 char a[10][30] 数组的指针 char(*a)[30] 4.3指针数组的应用场景 指针数组的两种用法(菜单 命令行) 操作系统拉起应用 在框架下干活 字符数组自我结束标志 // NULL 0 '\\0' 4.4强化训练
课堂考试“上黑板”
int sort(char *p[], int count, char **p, int *ncount); int sort(char *p[], int count, char (*p)[30], int *ncount); 欢迎阅读
欢迎阅读
int sort(char (*p)[30], int ncount, char **p, int *ncount);
//把第一种内存模型第二种内存模型结果copy到第三种内存模型中,并排序,打印 char ** sort(char **p1, int num1, char (*p)[30], int num2, int *num3 ); // #include \#include \#include \int getArray3_Free(char **p3, int p3num) { int i; if (p3 == NULL) { return -1; } for (i=0; i