#include<stdlib.h>
#include<string.h>
#include<stdio.h>
void PrintArray(char** array,int n) {
int i;
for (i = 0; i < n; i++) {
printf("%s\n", *(array + i));
}
}
void Sort(char* *Myarray, int num) {///数组作为函数参数时会退化为指针
//像这个num,函数调用结束后是不会改变实参的值虽然,
//但是在调用开始时是可以通过实参传递值过来在调用过程中进行辅助运算的
int i;
int j;
char* tmp = NULL;
//排序
for (i = 0; i < num; i++) {
for (j = i + 1; j < num; j++) {
if (strcmp(Myarray[i], Myarray[j]) > 0) {
tmp = Myarray[i];//交换的是数组元素,即一级指针
Myarray[i] = Myarray[j];
Myarray[j] = tmp;
}
}
}
}
void mainz3() {
char* MyArray[] = { "aaaaa","bbbbb","ccccc","111111" };
//数组,数组中的每一个元素均为指针,是一个指针数组
//char* *MyArray (*MyArray)是char*型的,即数组的元素类型是一级指针
//char** MyArray; (MyArray)是char**型的,即是一个二级指针,其指向一个数组的首地址,该数组里的元素都是一级指针
//char **MyArray *(*MyArray )是char型的,即数组元素里存放的一级指针其指向的内容是char型字符数据,也就是0级指针是char型的
int i = 0;
int j = 0;
int num = 0;
char* tmp = NULL;
num = sizeof(MyArray) / sizeof(MyArray[0]);
printf("排序前:\n");
PrintArray(MyArray,num);
Sort(MyArray, num);
printf("排序后:\n");
PrintArray(MyArray, num);
system("pause");
}
void main() {
char* MyArray[] = { "aaaaa","bbbbb","ccccc","111111" };//"aaaaa"是一个指针
int i = 0;
int j = 0;
int num = 0;
char* tmp = NULL;
num = sizeof(MyArray) / sizeof(MyArray[0]);
printf("num:%d\n", num);
printf("排序前:\n");
for (i = 0; i < num; i++) {
printf("%s\n", *(MyArray + i));
}
//排序
for (i = 0; i < num; i++) {
for (j = i + 1; j < num; j++) { //从小到大进行选择排序
if (strcmp(MyArray[i], MyArray[j]) > 0) {
tmp = MyArray[i]; //交换的是一级指针的指向
MyArray[i] = MyArray[j];
MyArray[j] = tmp;
}
}
}
printf("排序后:\n");
for (i = 0; i < num; i++) {
printf("%s\n", MyArray[i]);
}
system("pause");
}