Как мне заставить этот указатель работать? - PullRequest
0 голосов
/ 11 мая 2018

У меня есть 2 функции.Одна называется play_card, а другая - scan_card.

Как вы можете видеть, в функции scan_card она сканирует 3 числа.Однако мне нужно вернуть эти три числа обратно в play_card.Как я могу сделать это с помощью указателей?

void play_card(void) {

    int card_one;
    int card_two;
    int card_three;

    int card_array[] = {0};

    // Calls the scan_card function
    play_scanner(card_array);
    }

// Scans in the cards a user puts in
void scan_card(int card_array[]) {

    int num1;
    int num2;
    int num3;

    scanf("%d %d %d", &num1, &num2, &num3);

    *card_one = num1;
    *card_two = num2;
    *card_three = num3;
}

Ответы [ 3 ]

0 голосов
/ 11 мая 2018

Исправляя ответ выше,

Это должно работать как вам нужно

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

void play_card(void);
void scan_card(int* card_array);


int main()
{
    play_card();
    return 0;
}

void play_card(void)
{
    int card_array[3];

    // Calls the scan_card function
    scan_card(card_array);
    int card_one   = card_array[0];
    int card_two   = card_array[1];
    int card_three = card_array[2];
    printf("\n%d\n%d\n%d\n" , card_one , card_two , card_three);
}

// Scans in the cards a user puts in
void scan_card(int *card_array)
{

    int num1;
    int num2;
    int num3;

    scanf("%d %d %d", &num1, &num2, &num3);

    card_array[0] = num1;
    card_array[1] = num2;
    card_array[2] = num3;
}
0 голосов
/ 11 мая 2018

Попробуйте это:

void play_card(void) {

int card_one;
int card_two;
int card_three;

int card_array[] = {0};

// Calls the scan_card function
play_scanner(card_array,&card_one,&card_two,&card_three);
}
void scan_card(int card_array[],int *card_one,int *card_two,int* card_three) 
{

int num1;
int num2;
int num3;

scanf("%d %d %d", &num1, &num2, &num3);

*card_one = num1;
*card_two = num2;
*card_three = num3;
}
0 голосов
/ 11 мая 2018

Это самая простая реализация, которая приходит мне в голову.

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

void play_card(void);
void scan_card(int* card_array[]);


int main()
{
    play_card();
    return 0;
}

void play_card(void)
{
    int* card_array[3];

    // Calls the scan_card function
    scan_card(card_array);
    int card_one = *card_array[0];
    int card_two = *card_array[1];
    int card_three = *card_array[2];
    printf("\n%d\n%d\n%d\n" , card_one , card_two , card_three);
}

// Scans in the cards a user puts in
void scan_card(int* card_array[])
{

    int num1;
    int num2;
    int num3;

    scanf("%d %d %d", &num1, &num2, &num3);

    card_array[0] = &num1;
    card_array[1] = &num2;
    card_array[2] = &num3;
}
...