Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2012, 22:22   #1
NinjaNoob
Пользователь
 
Регистрация: 02.10.2012
Сообщений: 40
По умолчанию Возвращение результата через аргумент

Некая функция должна возвращать результат через один из своих аргументов. Как это должно выглядеть?
NinjaNoob вне форума Ответить с цитированием
Старый 02.12.2012, 22:27   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Предположу, что на С++.
Код:
#include <iostream>
using namespace std;
 
void
f(int *a)
{
    *a = 1;
}
 
int
main()
{
    int intNum = 0;
    f(&intNum);
    cout << intNum;
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 02.12.2012, 22:29   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

var в Дельфи, ref в с#
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 03.12.2012, 01:40   #4
NinjaNoob
Пользователь
 
Регистрация: 02.10.2012
Сообщений: 40
По умолчанию

Да, на с++. Извините, что забыл указать.
Спасибо за понятное объяснение.
Я так понимаю, что функция должна быть именно ВОИД?
NinjaNoob вне форума Ответить с цитированием
Старый 03.12.2012, 11:52   #5
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Предположу, что на С++.
Код:
#include <iostream>
using namespace std;
 
void
f(int *a)
{
    *a = 1;
}
 
int
main()
{
    int intNum = 0;
    f(&intNum);
    cout << intNum;
    return 0;
}
Не знаю, насколько это правильно, поэтому предлагаю ещё такой вариант
Код:
void f(int &a)
{
    a = 1;
}
Потом в основнйо программе просто вызываем
Код:
f(a);
Цитата:
Я так понимаю, что функция должна быть именно ВОИД?
Думаю, что необязательно. ИМХО, она может возвращать значения и вместе с тем меня значение одного из своих аргументов, если он не единственный.
Вадим Мошев вне форума Ответить с цитированием
Старый 03.12.2012, 17:03   #6
NinjaNoob
Пользователь
 
Регистрация: 02.10.2012
Сообщений: 40
По умолчанию

Код:
void arr2(int &mso, int num) //возврат масива через аргумент
{
	int *array;
	array=new int[num];
	for (int i=0; i<num; i++)
	{
		array[i]=rand()%100-50;
	}
	mso=*array;
}
не могу понять
вот так?
а как потом напечатать все эелементы массива?
Код:
for (int i=0; i<numElem; i++)
	{
		cout<<*(arr2(*mso, numElem)+i)<<" ";
	}

Последний раз редактировалось NinjaNoob; 03.12.2012 в 17:16.
NinjaNoob вне форума Ответить с цитированием
Старый 03.12.2012, 18:40   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
#include <iostream>
#include <cstdlib>
using namespace std;
 
void
f(int **a, int num)
{
    int *b = new int[num];
    for (int i = 0; i < num; ++i) {
        b[i] = rand() % 100 - 50;
    }
    *a = b;
}
 
int
main()
{
    int *b;
    int numElem = 10;
    for (int i = 1; i < numElem; ++i) {
        f(&b, i);
        for (int j = 0; j < i; ++j) {
            cout << b[j] << " "; 
        }
        delete [] b;
        cout << endl;
    }
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 04.12.2012, 00:56   #8
NinjaNoob
Пользователь
 
Регистрация: 02.10.2012
Сообщений: 40
По умолчанию

Здорово. Спасибо.
Не могли бы вы объяснить что к чему, и почему так выходит)
NinjaNoob вне форума Ответить с цитированием
Старый 04.12.2012, 11:04   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Не могли бы вы объяснить что к чему, и почему так выходит)
Работа с переменной осуществляется не по имени, а по ее адресу. С одной стороны это удобно с другой вредно, связывает код, источник ошибок и вообще не по фень-шую. Сейчас в современных языках программирования постепенно уходят от прямого доступа к памяти и возможно в последующих поколениях языков программирования прямых ссылок не будет вообще.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возвращение массива записей через объект CodeNOT PHP 8 14.04.2011 18:30
Нужно передать аргумент XxXGhosTXxX Общие вопросы C/C++ 12 10.04.2011 19:13
как передать аргумент? Sergey112233 Microsoft Office Excel 5 13.02.2011 12:32
аргумент командной строки DeFace Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 06.09.2010 22:10