Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > функция return


Автор: PELIKANN 14.10.2008, 18:20
помогите разобраться с функцией return....я новичок в С....
как мне сделать так чтобы после выполнении подпрограммы значение переменной которое изменялось в подпрограмме сохранилось и было использовано в дальнейшем в основной программе...а конкретно что надо написать return?

заранее спасибо

Автор: Fin 14.10.2008, 18:55
Через return ты можеш возвратить только одну переменную. Если хочеш несколько переменных возвратить, то нужно работать через указатели. Пример с некоторыми ошибками, но в принципе рабочий.
Код

#include <stdio.h>

int someFunction(int *a, int *b)
{
   int res=0;
   (*a)++;
   (*b)++;
   res= *a + *b;
   return res;
}

int main()
{
   int a=3;
   int b=4;
   int c=someFunction(&a, &b);
   printf("%d + %d = %d\n", a, b, c);
   return 0;
}

Подумай, что произойдет, если я вызову someFunction(0, 0); И как избежать последствия.

Автор: mrbrooks 14.10.2008, 18:59
PELIKANN, видишь ли друг - в книжках по С++ и не про такое пишут - поверь мне... и почитай.  smile ведь для кого-то их пишут.

Автор: PELIKANN 14.10.2008, 19:15
mrbrooks не поверишь читал....только от этого мало что изменилось smile

Добавлено через 12 минут и 42 секунды
Представим что у меня есть такая программа. Символами ------- обозначены различные операции....
Код

int CharToInt(char s[],int z)
{
int n=0;
if (s[z]>='0' && s[z]<='9')
    n=s[z]-'0';
return n;
}

main()
{
-----------
s[i]=k;
CharToInt(s,i);
res=n+2;

----------
}


после выполнения функции CharToInt значение n теряется....как избежать

Цитата

Подумай, что произойдет, если я вызову someFunction(0, 0); И как избежать последствия.


наверно ошибку выдаст....ведь в мы работаем с указателями....надо поставить someFunction(&0, &0)

Автор: IKM2007 14.10.2008, 19:44
PELIKANN, собственно, что ты делаешь?
Надо писать так
Код

n=CharToInt(s,i);


или сразу так
Код

res=CharToInt(s,i)+2;


функцию лучше писать так.
Код

int CharToInt(char z)
{
return (z>='0' && z<='9')?z-'0':0;
}

Автор: mes 14.10.2008, 19:44
Цитата(PELIKANN @  14.10.2008,  19:15 Найти цитируемый пост)
CharToInt(s,i);
res=n+2;


Код

res=CharToInt(s,i)+2;

Автор: PELIKANN 14.10.2008, 20:46
всем спасибо...я разобрался smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)