C 我如何使这个指针工作?

C 我如何使这个指针工作?,c,function,pointers,scanf,C,Function,Pointers,Scanf,我有两个功能。一个叫play_card,一个叫scan_card 如您所见,在扫描卡功能中,它扫描3个数字。不过,我需要把这三个数字还给你才能玩这张牌。我怎样才能用指针做到这一点 void play_card(void) { int card_one; int card_two; int card_three; int card_array[] = {0}; // Calls the scan_card function play_scann

我有两个功能。一个叫play_card,一个叫scan_card

如您所见,在扫描卡功能中,它扫描3个数字。不过,我需要把这三个数字还给你才能玩这张牌。我怎样才能用指针做到这一点

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;
}

这是我想到的最简单的实现

#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;
}
#包括
#包括
作废扑克牌(作废);
无效扫描卡(int*卡数组[]);
int main()
{
玩扑克牌();
返回0;
}
作废扑克牌(作废)
{
int*card_数组[3];
//调用扫描卡函数
扫描卡(卡阵列);
int card_one=*card_数组[0];
int card_two=*card_数组[1];
int card_three=*card_数组[2];
printf(“\n%d\n%d\n%d\n”,卡1、卡2、卡3);
}
//扫描用户放入的卡
无效扫描卡(int*卡阵列[])
{
int num1;
int num2;
int num3;
scanf(“%d%d%d”、&num1、&num2、&num3);
卡_阵列[0]=&num1;
卡_阵列[1]=&num2;
卡_阵列[2]=&num3;
}

修复上述答案

这应该是你需要的

#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;
}
#包括
#包括
作废扑克牌(作废);
无效扫描卡(int*卡阵列);
int main()
{
玩扑克牌();
返回0;
}
作废扑克牌(作废)
{
int卡_阵列[3];
//调用扫描卡函数
扫描卡(卡阵列);
int card_one=card_数组[0];
int card_two=card_数组[1];
int card_three=卡_数组[2];
printf(“\n%d\n%d\n%d\n”,卡1、卡2、卡3);
}
//扫描用户放入的卡
无效扫描卡(int*卡阵列)
{
int num1;
int num2;
int num3;
scanf(“%d%d%d”、&num1、&num2、&num3);
卡_阵列[0]=num1;
卡_阵列[1]=num2;
卡_阵列[2]=num3;
}
试试这个:

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;
}

card\u一个
和另外两个在另一个函数中声明,这意味着它们将无法访问。您还需要在每个指针中存储变量的地址,而不是它的值。@Logan,所以我需要在这里存储地址。像这样
void scan_card(int*card_one,int*card_two,int*card_two,int*card_two,int-card_数组[])
Yes,这是一种方法。@Logan更好的方法是什么?我会这么说。您也可以使用全局变量,但它们不应该经常使用。