二维数组的使用
//char *arr[4] 指针数组 arr+1 移动一个指针的大小 4
//char (*arr)[4]数组指针 arr+1 移动步长sizeof(char)*4 = 4
//"abc" "acd" "sfg" "ertu"
//二维数组对以上字符串进行排序
//char arr[4][5]={"abc","acd","sfg","ertu"};
int sort_arr(char (*p)[5],int row){//char p[][5]
if(NULL == p){
return -1;
}
int i = 0;
int j = 0;
//冒泡排序
for(;i<row;i++){
for(j=0;j<row-i-1;j++){
swap_arr(p[j],p[j+1]);
}
}
}
void swap_arr(char *p,char *q){
if(strcmp(p,q) == 1){
char arr[N]={0};
strcpy(arr,p);
strcpy(p,q);
strcpy(q,arr);
}
}
void print_arr(char (*p)[5],int row){
if(NULL == p){
return -1;
}
int i = 0;
for(;i<row;i++){
printf("%s ",p[i]);
}
}
//main调用部分
char arr[4][5]={"abc","acd","sfg","ertu"};
int row = sizeof(arr)/sizeof(arr[0]);
print_arr(arr,row);
sort_arr(arr,row);
printf("\n");
print_arr(arr,row);
指针数组的使用
int sort_arr1(char *p[],int row){//char **p
if(NULL == p){
return -1;
}
int i = 0;
int j = 0;
//冒泡排序
for(i=0;i<row;i++){
for(j=0;j<row-i-1;j++){
swap_arr(&p[j],&p[j+1]);
}
}
}
void swap_arr(char **p,char **q){
char *arr=NULL;
if(strcmp(*p,*q) == 1){
arr=*p;
*p=*q;
*q=arr;
}
}
void print_arr1(char *p[],int row){
if(NULL == p){
return -1;
}
int i = 0;
for(;i<row;i++){
printf("%s ",p[i]);
}
}
//main函数调用部分
char *arr1[4]={"abc","acd","sfg","ertu"};
int row = sizeof(arr1)/sizeof(char*);
print_arr1(arr1,row);
sort_arr1(arr1,row);
printf("\n");
print_arr1(arr1,row);
参照pratice_pointer Code部分。