有人能告诉我解释,如何将struct传递给函数?我试图将我的排序放入一个函数中,并将我的结构传递给它
typedef struct
{
int weight;
int price;
Color color;
Equip equip;
}Cars;
Cars automobil[5];
sort_cars(&automobil[NUMBER_OF_CARS]);
void sort_cars(struct Cars*automobil[NUMBER_OF_CARS]){
int i,j;
CarsmobilOne={};
for(j=0; j<NUMBER_OF_CARS-1; j++)
{
for (i=0; i<NUMBER_OF_CARS-1; i++){
if (automobil[i]->weight < automobil[i+1]->weight)
{
continue;
}else{
mobilOne = automobil[i];
automobil[i] = automobil[i+1];
automobil[i+1] = mobilOne;
}
}
}
我从类型'struct Cars *'|中分配类型'Cars'时出现此错误“不兼容的类型”我试图像人们在互联网上那样传递结构
答案 0 :(得分:3)
我试图像人们在互联网上那样传递结构
不,你没有。您试图发明一种用于传递数组的新语法,但不幸的是,它是不数组以C语言传递的方式。
在C语言中,当数组作为参数传递给函数时,数组会衰减为指针,因此人们通常会将实际长度与数组一起传递。
所以你应该使用:
void sort_cars(Cars*automobil, int number_of_cars){
int i,j;
Cars mobilOne={};
for(j=0; j<number_of_cars-1; j++)
{
for (i=0; i<number_of_cars-1; i++){
if (automobil[i]->weight < automobil[i+1]->weight)
{
continue;
}else{
mobilOne = automobil[i];
automobil[i] = automobil[i+1];
automobil[i+1] = mobilOne;
}
}
}
}
并称之为:
sort_cars(automobil, 5);
答案 1 :(得分:2)
int x = rand();
int p = std::find(v.begin(), v.end(), x);
记住K&amp; R的许多明智的说法之一:&#34;当一个数组名称传递给一个函数时,传递的是数组开头的位置&#34;。
在sortThem()&#34; autom&#34;是一个变量,其值是automobil [0]的地址。
约翰