Использование переменных - PullRequest
       1

Использование переменных

0 голосов
/ 27 августа 2011

У меня проблема с этой простой программой, потому что она не дает мне истинного результата.Я просто хочу суммировать два аргумента в первой функции, а затем использовать результат во второй.Было бы неплохо иметь общий результат в основной функции.Также я хотел бы задать тот же вопрос с массивами.

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

int sum()
{
int a=2;
int b=3;
int s=a+b;
printf("sum=%d\n",s);
return s;
}

int sum2(int s)
{
int c=5;
int d=c+s;

}


int main(int s,int d)
{
sum();

printf("sum=%d\n",s);

printf("sum2=%d\n",d);

getchar();
return 0;
}

Ответы [ 4 ]

3 голосов
/ 27 августа 2011

Есть много проблем с этим кодом:

  • int main(int s, int d) не будет делать то, что вы думаете.Аргументы командной строки вашей программы имеют строковый формат.Поэтому вам нужно будет использовать int main(int argc, char *argv[]).
  • Переменные s и d в main() полностью независимы от переменных в sum() и sum2().Поэтому изменение их значений в этих функциях не повлияет на исходные переменные.
  • Вы даже не вызываете вторую функцию!

Вы можете сделать что-то вроде этого:

int sum(int a, int b)
{
    return a+b;
}

int sum2(int c)
{
    return c+5;
}

int main(void)
{
    int x = 2;
    int y = 3;
    int z = sum(x,y);
    int w = sum2(z);
    printf("z = %d\n", z);
    printf("w = %d\n", w);
}
1 голос
/ 27 августа 2011

Я не скажу вам ответ (смеется, но другие имеют), но я дам вам эти подсказки, чтобы выяснить это.

Спросите себя, какие функции возвращают данныеа какие нет.

Подсказка: функции требуется return для возврата некоторых данных.

Затем спросите себя, какие функции возвращаются на самом деле.

Подсказка: для сбора данных, возвращаемых функцией, вам нужно присвоить результат переменной, например, так:

  int i;
  i = somefunct();
1 голос
/ 27 августа 2011

Прежде всего, s является локальной переменной внутри sum( ).Следовательно, он не может быть доступен за пределами функции.

int sum() {   
   // ..  
   int s = a+b; // local variable, hence local scope  
  // .. 
 } 

Кроме того, во-вторых, int main(int s,int d) не будет работать, так как в командной строке аргументы приходят в формате String.Так что не могу использовать int там

0 голосов
/ 27 августа 2011

Вы не можете получить доступ к значению переменной 's' вне функции sum(), так как оно выходит за рамки.Вам нужно будет вернуть значение вашей функции main().Также ваши основные параметры функции неверны.Вам нужно что-то вроде этого:

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

int sum(int a, int b)
{
    int s=a+b;
    printf("sum=%d\n",s);
    return s;
}

int sum2(int c, int sum)
{
    return c+sum;
}


int main(int argc, char *argv[])
{
    int val1 = sum(2, 3);
    printf("sum=%d\n",val1);

    int val2 = sum2(5, val1);
    printf("sum2=%d\n", val2);

    getchar();
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...