2015-04-15 20 views

回答

2

而不是使用一堆數組,您可以將所需的所有東西放入struct,製作一組structs。例如:

struct user { 
    char name[100]; 
    int age; 
}; 

struct user user_array[100]; 

或者,如果你不想改變整個代碼,只是做一個交換功能somwhere,並在您的排序算法,而不是直接交換的元素,只需要調用一個交換功能。例如,假設你有

char name[100][100]; 
int age[100]; 

的交換功能將類似於

void swap_users(int a, int b, char ** name, int * age) 
{ 
    int age_tmp; 
    char *name_tmp; 
    age_tmp = age [a]; age [a] = age [b]; age [b] = age_tmp; 
    name_tmp = name[a]; name[a] = name[b]; name[b] = name_tmp; 
} 

而且你的排序算法看起來像:

void some_sorting_algorithm() 
{ 
    // do something ... 
    // do something ... 
    // maybe some loop? ... 
     swap_users(x, y, name, age); 
    // continue the loop or doing something 
} 

PS:希望我理解你的問題正確。

+0

我喜歡這個交換功能,但我不知道我理解它。你能解釋星號嗎?指針? – IdislikeCalot

+0

聲明中的星號表示它是指向類型的指針。從技術上講,數組是一個指針。例如,'int * age' - > age是一個指向整數的指針,'int age [100]' - > age也是一個指向整數'char ** name' - >的指針,所以name是一個指向指針的指針char(在聲明中'char name [100] [100]' - > name也是指向char的指針)。 – FalconUA

+0

建議:寧可使用100和100的名字大小和user_array大小,使用2個不同的常量:更容易讓新人跟隨你的好例子/ – chux

相關問題