0
我有以下代碼:選擇排序使用指針
void sortStrings(char strings[5][32])
{
int i = 0, j = 0, wall = 0;
int min = i;
for (int i = wall; i < 5; i++){
min = i;
for (j = wall; j < 5; j++){
if (strcmp(strings[j], strings[min]) < 0){
min = j;
}
}
swapStrings(strings[min], strings[wall]);
wall++;
}
}
這段代碼的作用是排序按字母順序排列的字符串的二維數組,我已經測試它,它工作正常,現在我的問題是,怎麼可能我沒有使用數組操作(又名僅使用指針和指針操作)來實現此代碼。
這就是我到目前爲止,當我嘗試運行它,所以我做錯了什麼?
{
int i = 0, j = 0, wall = 0;
char *p = strings;
int min;
for (i = wall; i < 5; i++){
min = i;
for (j = wall; j < 5; j++){
if (*(p + j) < *(p + min)){
min = j;
}
}
swapStrings(*(p + j),*(p + wall));
wall++;
}
}
這裏是swapStrings方法,我用供參考:
void swapStrings(char string1[], char string2[])
{
char temp[32];
strcpy(temp, string1);
strcpy(string1, string2);
strcpy(string2, temp);
}
預期輸出是:如果我在5串進入,可以說它們是:
hello
goodbye
how
are
you
應該返回:
are
goodbye
hello
how
you
謝謝。
把函數簽名放在你的指針示例中,否則我們不知道你想如何工作。此外,爲什麼5 - 你想這個尺寸總是5尺寸,或者你應該傳遞一個參數的大小(在你的功能缺失簽名)?等等。 –
'char * p = strings;'由於對象字符串是一個二維數組,因此無效。看看這個答案:http://stackoverflow.com/questions/7586702/is-2d-array-a-double-pointer –