gpt4 book ai didi

c - main 之外的函数中的值不会保留在结构中

转载 作者:行者123 更新时间:2023-11-30 15:28:23 26 4
gpt4 key购买 nike

我遇到的问题是,我在主函数之外设置的函数中的值没有保留在结构中。我可能没有很好地描述这一点,所以我将展示程序和结果并解释我想要的内容

 struct Satellite
{
char countries[30];
int package;
int priceperpackage;
int timetransmission;
int requestedTransmission;
};

struct Satellite Satellite1;
struct Satellite Satellite2;
struct Satellite Satellite3;
struct Satellite Satellite4;
struct Satellite Satellite5;

void functionInput(void)
{
/*Country 1*/
strcpy(Satellite1.countries, "USA");

/*Country 2*/
strcpy(Satellite2.countries, "China");

/*Country 3*/
strcpy(Satellite3.countries, "Germany");

/*Country 4*/
strcpy(Satellite4.countries, "Japan");

/*Country 5*/
strcpy(Satellite5.countries, "Switzerland");
}

void printItems( struct Satellite satellite );

void assignValues( struct Satellite satellite );

int main(void)
{
functionInput();

assignValues ( Satellite1 );
assignValues ( Satellite2 );
assignValues ( Satellite3 );
assignValues ( Satellite4 );
assignValues ( Satellite5 );

printItems ( Satellite1 );
printItems ( Satellite2 );
printItems ( Satellite3 );
printItems ( Satellite4 );
printItems ( Satellite5 );

return 0;
}

void printItems( struct Satellite satellite )
{
printf( "%s\t\t %d\t\t %d\t\t %d\t\t %d\n", satellite.countries,satellite.requestedTransmission,satellite.package,satellite.priceperpackage,sat llite.timetransmission);
}

void assignValues( struct Satellite satellite )
{
satellite.requestedTransmission = (rand()% 2);
satellite.requestedTransmission = (rand()% 4 +1);
printf( "%s\t\t %d\t\t %d\t\t %d\t\t %d\n", satellite.countries,satellite.requestedTransmission,satellite.package,satellite.priceperpackage,sate llite.timetransmission);
}

这是输出

USA              4               0               0               0
China 1 0 0 0
Germany 1 0 0 0
Japan 3 0 0 0
Switzerland 1 0 0 0
USA 0 0 0 0
China 0 0 0 0
Germany 0 0 0 0
Japan 0 0 0 0
Switzerland 0 0 0 0

因为相同的内容不会打印两次,所以来自 allocateValues 函数的值不会保留在结构中。

最佳答案

功能:

void assignValues( struct Satellite satellite )

应该是:

void assignValues( struct Satellite *satellite )
{
satellite->requestedTransmission = (rand()% 2);

等,您可以通过编写 assignValues( &satellite1 ); 等来调用它。您可以通过这种方式表明您希望 assignValues 对名为 satellite1 的对象进行操作。

按照您最初编写代码的方式,它会创建 satellite1 的副本,并将该副本发送到 assignValues 中。对副本所做的更改不会影响原始版本。

关于c - main 之外的函数中的值不会保留在结构中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26621717/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com