#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//字符串排序 根據字符串首字符 按照a-z的順序排序
void bubble(char ** arr,int len)
{
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - i - 1; j++)
{
//對比兩個字符串的首字母
if (**(arr+j) > **(arr+j+1))//比較首字母大小
{
char * temp = *arr;//交換地址
*(arr+j) = *(arr+j+1);
*(arr+j+1) = * temp;
}//可以想象成一級指針的形式便於理解**arr指的是首字符的值
//*arr就是相當於存儲首字符值的地址
/*
if (arr[j][0] > arr[j + 1][0])
{
char * temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
*/
//也可以這樣寫,這是比較首字符,再進行交換值
}
}
}
int main()
{
char * arr[] = { "ctudent", "bree", "eew", "aee" };
//char * 類型數組對應bubble函數應為二級指針
//char 類型數組對應bubble函數應為一級指針
//用*arr[0][0]可以找到對應的字符‘s’
bubble(arr, 4);
for (int i = 0; i < 4; i++)
{
printf("%s\n", arr[i]);
}
system("pause");
return EXIT_SUCCESS;
}
注意:不能把所有的二級指針都當作二維數組來操作,可能會出現錯誤
