2015-04-15 19 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

相关问题