gpt4 book ai didi

c - 如何从函数中的变量获取值并在 C 中的另一个函数中使用它?

转载 作者:行者123 更新时间:2023-11-30 19:14:11 25 4
gpt4 key购买 nike

我试图在程序中处理一些牌,但我不知道的是,从函数中获取值并将其传递到我的其他函数中,而不使用全局变量。

现在,我被困在我的计划中,无法到达任何地方..

我在下面写了一条评论,指出我的问题所在。希望有人能解决这个问题:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define DIAMONDS 0
#define CLUBS 1
#define HEARTS 2
#define SPADES 3
#define COLOR_SIZE 13
#define NR_OF_SUITS 4
#define DECK_SIZE 52
#define JACK 11
#define QUEEN 12
#define KING 13
#define ACE 1

struct Card
{
int suit;
int value;
int *sum;
};

void player1(struct Card* deck);
void printCards(struct Card *cardDeck);
void swapCards(struct Card *cardA, struct Card *cardB);
void shuffleCards(struct Card *cardDeck);

//==================================================================
int main()
{
srand(time(NULL));
//struct Card deck[DECK_SIZE]; //Statically allocated array
struct Card * deck; //Dynamically allocated array
int index;
int suit_index;

deck = (struct Card *)malloc(sizeof(struct Card) * DECK_SIZE);
for (suit_index = 0; suit_index < NR_OF_SUITS; suit_index++) /* Initiera kortleken */
for (index = 0; index < COLOR_SIZE; index++)
{
deck[suit_index*COLOR_SIZE + index].suit = suit_index;
deck[suit_index*COLOR_SIZE + index].value = index;
}
shuffleCards(deck);
player1(deck);
system("pause");
return 0;
}
//==================================================================

void printCards(struct Card *cardDeck)
{
int sum = 0;
for (int i = 0; i < 1; i++)
{
switch (cardDeck[i].value + 1)
{
case ACE: printf("Ace ");
cardDeck[i].value = 11;
break;
case JACK: printf("Jack ");
cardDeck[i].value = 10;
break;
case QUEEN: printf("Queen");
cardDeck[i].value = 10;
break;
case KING: printf("King ");
cardDeck[i].value = 10;
break;
default: printf("%d ", cardDeck[i].value);
break;
}

printf("of ");
switch (cardDeck[i].suit)
{
case DIAMONDS: printf("Diamonds ");
break;
case HEARTS: printf("Hearts ");
break;
case CLUBS: printf("Clubs ");
break;
case SPADES: printf("Spades ");
break;
default: printf("Something went wrong!! ");
break;
}
printf("\n");
sum += cardDeck[i].value;
}
}

//----------------------------------------------------------------------
void swapCards(struct Card * cardA, struct Card *cardB)
{
struct Card temp;
temp = *cardA;
*cardA = *cardB;
*cardB = temp;
}

//----------------------------------------------------------------------
void shuffleCards(struct Card *cardDeck)
{

for (int i = 0; i < DECK_SIZE; i++)
swapCards(&cardDeck[i], &cardDeck[rand() % 52]);
}

//----------------------------------------------------------------------
void player1(struct Card* deck) {
int sum = 0;
printCards(deck);

// Insert code here
}

我在最后一个函数中的想法是使用上面的变量 sum,并对所有卡片求和,所以如果我调用 printcards(deck) 三次,我每次都想总结一下。

这是怎么做到的?

最佳答案

How do I take a value from a variable in a function and use it in another function in C ?

通常,您可以将其作为指针传递并返回到所需的函数。函数签名应该类似于:

variable_type* function (variable_type* modified_variable);

然后调用如下:

new_value = function(&modified_variable);

其中&符号&表示将进行更改。

就您的情况而言,您可以通过按值返回来实现,只需将 void printCards(struct Card *cardDeck) 修改为:

int printCards(struct Card *cardDeck) {

// adding a last line that returns the accumulated sum
return sum;
}

然后在你的函数中使用它,如下所示:

void player1(struct Card* deck) {
int sum = 0;
sum = printCards(deck);
}

关于c - 如何从函数中的变量获取值并在 C 中的另一个函数中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34513827/

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