2014-09-17 3 views
0

Это довольно простая проблема. Я пытаюсь понять, как передать переменные int другим функциям из входной функции, чтобы ее можно было использовать в функции stuff математика затем возвращает добавленную переменную, а затем передает все три функции вывода.Возвращение Множественные переменные между функциями в C

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

int input(int first, int second, int third); 
int stuff(int first, int second, int third, int added); 
int output(int first, int second, int third, int added); 

int main(){ 

    int first,second,third; 
    int added; 

    //sub functions 
    input(first,second,third); 
    stuff(first, second, third, added); 
    output(first, second, third, added); 

    return(0); 
} 

int input(int first, int second, int third){ 

    printf("Enter an interger for #1:"); 
    scanf("%d",&first); 
    printf("Enter an interger for #2:"); 
    scanf("%d",&second); 
    printf("Enter and interger for #3:"); 
    scanf("%d",&third); 

    return first,second,third; 
} 

int stuff(int first, int second, int third, int added){ 

    added = first + second + third; 
    return added; 
} 

int output(int first, int second, int third, int added){ 

    printf("Integer 1 = %d\n",first); 
    printf("Integer 2 = %d\n",second); 
    printf("Integer 3 = %d\n",third);  
    printf("Integer 1,2,3 added together = %d\n",added); 
} 
+0

«достаточно простой» может быть проще, если вы нас пунктуация. –

ответ

3

Либо использовать struct

struct Foo { 
    int first, second, third; 
} 

struct Foo input() { 
    struct Foo foo; 
    printf("Enter an interger for #1:"); 
    scanf("%d",&foo.first); 
    printf("Enter an interger for #2:"); 
    scanf("%d",&foo.second); 
    printf("Enter and interger for #3:"); 
    scanf("%d",&foo.third); 
    return foo; 
} 

Или передавать указатели:

void input(int* first, int* second, int* third){ 
    printf("Enter an interger for #1:"); 
    scanf("%d",first); 
    printf("Enter an interger for #2:"); 
    scanf("%d",second); 
    printf("Enter and interger for #3:"); 
    scanf("%d",third); 
} 

int main(){ 

    int first,second,third; 
    int added; 

    //sub functions 
    input(&first,&second,&third); 
    stuff(first, second, third, added); 
    output(first, second, third, added); 

    return(0); 
} 
0

Вы можете использовать указатели и передать адрес этих переменных в каждой функции. Каждый раз, когда вы его используете, вы можете разыменовывать каждую переменную в функциях.

0

Вы могли бы просто использовать указатели. То есть, изменить объявление функции для:

int input(int *first, int *second, int *third); 

В самой функции, вы используете:

int input(int *first, int *second, int *third){ 

    printf("Enter an interger for #1:"); 
    scanf("%d",first); 
    printf("Enter an interger for #2:"); 
    scanf("%d",second); 
    printf("Enter and interger for #3:"); 
    scanf("%d",third); 
} 

И когда вы это называете, используйте:

input(&first,&second,&third); 
0

Вы можете сделать следующее :

void input(int *a, int *b, int *c); 

int main() 
{ 
    int first, second, third; 

    /* ... */ 
    input(&first, &second, &third); 
    /* ... */ 
} 

void input(int *a, int *b, int *c) 
{ 
    printf("Enter an interger for #1:"); 
    scanf("%d", a); 
    printf("Enter an interger for #2:"); 
    scanf("%d", b); 
    printf("Enter and interger for #3:"); 
    scanf("%d", c); 
} 
Смежные вопросы