Задать вопрос
Firetheestle
@Firetheestle

Как передать значение переменной из одной функции в другую?

Доброго времени суток народ! ;з Подскажите пожалуйста как передать значение переменной из одной функции в другую? две пары гуглил и в итоге так и не смог это сделать ;C
Вот код
#include<stdio.h>
#include<string.h>
VVOD (x,y)
char x[],y[];
{
	int m,i,j,l,n1;
	puts("Vvedite text");
	gets(x);
	n1=strlen(x);
	for(i=0,j=0,l=0;l<=n1;l++)
	{
		if(x[l]==' '||x[l]=='\0')
		{
			*(y+i*15+j)='\0';
			i++;
			j=0;
		}
		else 
		{
			*(y+i*15+j)=x[l];
			j++;	
		}
	}
	m=i;
	return m;
}

//zadanie1
ZADANIE1(x,y)
char x[],y[];
{
	int k,l,i,j;
	int &n=m;
	l=0;
	for(i=0;i<n;i++)		
		{
			k=strlen(y[i]);
			for(j=0;j<n;j++)		
			{
				if(*(y+i*15+j)>='0'&&*(y+i*15+j)<='9')	
				{
					l=1;
				}
			}
		}
	if(l==1)		
	{
		printf("Cifri Ect'\n");
	}
	else		
	{
		printf("Cifr Het\n");
	}
}

код вставлен без main.
Суть в том чтобы в функцию ZADANIE1 передать значение переменной m из функции VVOD. Погуглив я попробовал сделать через ссылку, но не получилось ;[ Пробовал также через возвращение значения функции, но к сожалению не получилось ;C
  • Вопрос задан
  • 30330 просмотров
Подписаться 1 Оценить 9 комментариев
Решения вопроса 1
@abcd0x00
Функция что-то принимает и что-то возвращает. Только так функции должны обмениваться данными между собой. То, что возвращает одна функция, должно передаваться в виде аргумента в другую функцию.

Пример
#include <stdio.h>

int func1()
{
    return 5;
}

int func2(int x)
{
    return x * 2;
}

int func3(int x)
{
    return x * 3 + 1;
}

int main(void)
{
    printf("%d\n", func3(func2(func1())));
    return 0;
}


[guest@localhost c]$ .ansi t.c -o t
[guest@localhost c]$ ./t
31
[guest@localhost c]$

Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@zedxxx
Позволю себе процитировать ответ вот отсюда: Сколько есть способов передачи аргументов в функцию?

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

при передачи по указателю или ссылки передается только адрес, передаваемый объект можно изменить изнутри функции и не создается локальной (временной) переменной внутри функции. разница между передачи ссылкой и указателем в удобстве употребления (не надо писать звездочку каждый раз внутри функции).

#include <iostream>

using namespace std;

void f_value(int a){ // значение
    a = 10; // изменяем параметр
}

void f_poiner(int * a){ // указатель
    *a = 10; // изменяем параметр
}

void f_reference(int & a){ // ссылка
    a = 20; // изменяем параметр
}

int main(){
    int a = 0;  
    cout << "a = " << a << endl;    
    f_value(a); // значение переменной (а) НЕ изменится после выполнения
    cout << "a = " << a << endl;    
    f_poiner(&a); // значение переменной (а) изменится после выполнения 
    cout << "a = " << a << endl;
    f_reference(a); // значение переменной (а) изменится после выполнения
    cout << "a = " << a << endl;

    return 0;
}

---------------------------------------------------

a = 0
a = 0
a = 10
a = 20
Press <RETURN> to close this window...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы