Алексей Иванов
Алексей Иванов

С++ использование функцией переменных

Допустим, есть функция, описанная в файле srtbb.h, которая кроме нескольких локальных переменных, также использует n и mas[n]. Они описаны в программе, в которую вставлена эта функция. Возможно ли использование функцией переменных из программы, в которую она вставлена? Если да, то как это реализовать?

Если что, вот файл srtbb.h:
#ifndef _srtbb_H_
#define _srtbb_H_
#include
int jjjj,jjjjj,ttttt;
void srtbubble()
{
for (jjjj=n-1;jjjj>0;jjjj--)
{
for (jjjjj=0;jjjjj {
if (mas[jjjjj]>mas[jjjjj+1])
{
ttttt=mas[jjjjj];
mas[jjjjj]=mas[jjjjj+1];
mas[jjjjj+1]=ttttt;
}
}
}
}
#endif;

И сама программа:

#include
using namespace std;
#include
#include
#include "srtbb.h"
int main()
{
srand(time(NULL));
const int n=20;
int mas[n],i;
for (i=0;i {
mas[i]=rand()%50+1;
cout << mas[i] << "\n";
}
cout << "\n";
srtbubble();
for (i=0;i {
cout << mas[i] << "\n";
}
getchar();
getchar();
return 0;
}

КИ
Ковалёв Иван Васильевич

Вообще ответ на твой вопрос - "да". Ответ на твой вопрос с уточнением "но без извращений" - "нет". А ответ на твой вопрос с уточнением "как это сделать правильно" - вообще третий, на нем и остановимся: надо передать n и mas параметрами в функцию.

АК
Антон Кривцов

Обычно в заголовочных файлах (*.h; *.hpp) вставляется только описание функций, классов и т. п. Реализация приводится в соответствующих файлах (*.с; *.срр).

СК
Сергей Конев

такое ощущение что у тебя на клаве остались рабочими всего несколько кнопок да?

СМ
Сеймур Мисирханов

Передай через параметры
void srtbubble(int my_n, int *my_mas){...

Можно конечно и вынести объявления за пределы майна (тут в коротком так сделано, но посмотри на области видимости переменных) и нагромоздить глобальные переменные, передавая их описания через экстерн. Но тогда будет хреновая связка отдаленных кусков через глобальщину и затрахаешься связи между файлами и функциями отслеживать в "спагетти-коде"

Все переменные должны быть _СТРОГО_ внутри логического куска кода, или передаваться ему как параметры. .

глобальщина допустима только если "иначе никак"

Похожие вопросы
JavaScript. Можно ли использовать переменную объявленную внутри функции, вне функции? вн код
Поменять местами значения двух переменных с использованием третьей переменной. Как это сделать в С++
C++ использование нескольких функций.
C#. Написать функцию с переменным числом параметров
Как функция и ее переменные отображаются в памяти? Что происходит с функцией после возврата значения?
Чем отличаются логические переменные и логические функции?
Составление программ с использованием функций, возвращающих значения (С++)
Составление программ с использованием функций, передающих значения через глобальные переменные (С++)
Функция strstr и strcat без использования .Язык Си
Использование переменной при создании переменной C#