Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для damix
53 / 47 / 22
Регистрация: 04.11.2013
Сообщений: 404
Записей в блоге: 1

Передать локальные переменные другой функции

11.12.2018, 15:43. Показов 885. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть функция (допустим, main), в ней объявлены локальные переменные. Есть другая функция, к которой обращается main. Эта функция (func) по сути используется как процедура, т.е. она не должна ничего принимать или возвращать, а должна просто выполнить определенные действия (возможно повторяющиеся, вобщем которые удобно вынести в отдельную функцию) над теми же самыми переменными, что были объявлены в функции, ее вызвавшей.
C++
1
2
3
4
5
6
7
8
9
10
void func()
{
  // do something with a and b
}
 
void main()
{
  int a = 1; int b = 2;
  func();
}
Но это я в идеале так хочу. А по факту я знаю, что переменные при передаче в функцию копируются. Глобальные переменные использовать не хочется. Трюк с передачей по указателю (или по ссылке) знаю.
C++
1
2
3
4
5
6
7
8
9
10
void func(int* a, int* b)
{
  // do something with a and b
}
 
void main()
{
  int a = 1; int b = 2;
  func(&a, &b);
}
Но вот хороший ли это тон? В этой "подпрограмме" func нужны почти все переменные из "большой" программы и многим из них она меняет значения.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.12.2018, 15:43
Ответы с готовыми решениями:

Локальные, глобальные переменные и функции
Есть массив типа char. char b; Он заполнен нулями и единицами. b находится в main. Нужно вывести на консоль b в ф-ции main, но уже в...

Локальные переменные в функции и её аргумент
Привет! Пишу функцию перевода десятичного числа в текст (не обсуждайте зачем и правильно ли я делаю) Суть такова, начало функции: ...

Вызов функции из другой функции и обратно. Общие переменные функций
Всем привет. Заранее напишу, что я ещё только изучаю программирование В данной программе генирируются числа заполняющие одним...

4
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
11.12.2018, 15:53
Зависит от ситуации. Если эти переменные по своему смыслу - части единого целого, их стоит объединить в класс, и, соответственно, эту функцию сделать методом этого класса. Также важно декомпозицию делать осмысленно, а не просто резать код на функции.
0
Злостный нарушитель
 Аватар для Verevkin
10303 / 5725 / 1269
Регистрация: 12.03.2015
Сообщений: 26,520
11.12.2018, 16:05
Цитата Сообщение от damix Посмотреть сообщение
Трюк с передачей по указателю (или по ссылке) знаю.
Это не трюк, а один из способов передачи данных в функцию и из неё.
А в чём проблема-то?
0
 Аватар для damix
53 / 47 / 22
Регистрация: 04.11.2013
Сообщений: 404
Записей в блоге: 1
11.12.2018, 16:13  [ТС]
Много переменных передавать. Есть ли какая-то команда, чтобы передать все локальные переменные объявленные в текущей функции в другую функцию? (Вряд ли конечно. Мы ведь не знаем при компиляции, сколько их будет и каких типов.) Или что-то типа общей области видимости у двух функций?
0
Злостный нарушитель
 Аватар для Verevkin
10303 / 5725 / 1269
Регистрация: 12.03.2015
Сообщений: 26,520
11.12.2018, 16:21
Цитата Сообщение от damix Посмотреть сообщение
Или что-то типа общей области видимости у двух функций?
Для решения какой задачи тебе это нужно?!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.12.2018, 16:21
Помогаю со студенческими работами здесь

Локальные переменные
#include <iostream.h> #include <conio.h> // по объявлению библиотек сразу видно компилятор старый такчто ветераны с++ помогите ...

Неинициализированные локальные переменные
Меня интересует как обходить данные ошибки. В чем соль ошибок? Проблема даже не в том что они есть, а то что компилятор останавливается и...

Неиспользуемые локальные переменные
Добрый день. Напомните, пожалуйста, вот что. Имеем, например: void MyClass::myFunc() { SomeClass *cls = new SomeClass(); ...

Локальные переменные-классы
есть такой код #include <iostream> using namespace std; class My_vector{ friend ostream &operator<<(ostream &,const My_vector...

С++ ООП локальные переменные
Есть розмерность для матрицы n i m, если я ввожу их в функции create, то уже функция print их не видит.я понимаю что они локальные, как же...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru