Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
tautou
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 8
#1

Передача данных в другую область видимости - C++

09.04.2014, 22:11. Просмотров 253. Ответов 4
Метки нет (Все метки)

Задание
Кликните здесь для просмотра всего текста
1. Написать следующие функции для работы с динамическим массивом:
a. Функция распределения динамической памяти.
b. Функция инициализации динамического массива.
c. Функция печати динамического массива.
d. Функция удаления динамического массива.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <ctime>
using namespace std;
 
void ArrayInit(int size, int* ar_p) //Выделение памяти
{
    ar_p = new int[size]; //Указатель хранящий адрес выделеной памяти
}
void ArrayDelete(int size, int* ar_p)
{
    delete [size] ar_p;
}
void ArrayBuild(const int size, int* ar_p)
{
    srand (time(0));
    int ar [5];
    for (int i = 0; i < size; ++ i)
    {
        ar [i] = rand() % 10;
    }
    ar_p = &ar [5];
}
void ArrayPrint(int size, int* ar_p)
{
    for (int j = 0; j < size; ++ j)
    {
        cout << *(ar_p + 1) << endl;
    }
}
 
int main()
{
    int size = 5;
    ArrayInit(size, ar_p);
    ArrayBuild(size, ar_p);
    ArrayPrint(size, ar_p);
    ArrayDelete(size, ar_p);
}
Мне непонятно как можно использовать указатель из функции ArrayInit, хранящий адрес выделенной мне памяти, в последующих функциях, являющимися другими областями видимости.
Спасибо
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2014, 22:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача данных в другую область видимости (C++):

Передача данных в другую программу - C++
Как сделать, чтобы одна программа принимала входные данные от другой? Первая программа должна читать данные из файла in.txt, делать...

Область видимости - C++
У меня возникла проблема с областью видимости. вот у меня два класса class Obj { public: Win *parent;

Область видимости в С++ - C++
В книге С++ Бархатный путь. ( http://khpi-iip.mipk.kharkiv.edu/library/extent/prog/cppvw/cpp_047.html) сказано, что область действия имен...

Область видимости - C++
Даю фрагмент программы: #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;cmath&gt; struct elem //тип элемента двусвязного списка ...

Область видимости - C++
Здравствуйте. Тут такое дело: #include &lt;vector&gt; class SomeClass { public: SomeClass( std::vector&lt; int &gt; v ) : vec( v ) {} ...

Область видимости - C++
func { int someVariable; { int someVariable; //можно ли как нибудь получить доступ к переменной...

4
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
09.04.2014, 22:15 #2
tautou, вообще-то такие задачи следует решать с использованием классов и полей данных. Если конечно не хочется извращаться с возвратом по ссылочному аргументу.
0
tautou
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 8
09.04.2014, 22:29  [ТС] #3
Если я не ошибаюсь,классы это пользовательские типы данных, но мы такого не учили.
Я вот думал использовать инициализацию последующих функций в конце предидущей. (Это называется рекурсией кажется ) Т.е. каждая функция запускает следующую после себя функцию и значение можно передать через сигнатуру инициализируемрй функции.(перегрузка)
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
09.04.2014, 23:04 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
tautou, ну раз ещё не изучали, то могу предложить такой "доработанный" вариант:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
 
void ArrayInit(int size, int*& ar_p) //Выделение памяти
{
    ar_p = new int[size]; //Указатель хранящий адрес выделеной памяти
}
void ArrayDelete(int* ar_p)
{
    delete [] ar_p;
}
void ArrayBuild(const int size, int* ar_p)
{
    srand (time(0));
    for (int i = 0; i < size; ++ i)
    {
        ar_p[i] = rand() % 10;
    }
}
void ArrayPrint(int size, int* ar_p)
{
    for (int j = 0; j < size; ++ j)
    {
        cout << *(ar_p + j) << endl;
    }
}
 
int main()
{
    int size = 5;
    int* ar_p;
    ArrayInit(size, ar_p);
    ArrayBuild(size, ar_p);
    ArrayPrint(size, ar_p);
    ArrayDelete(ar_p);
}

http://ideone.com/3Tv5oC
1
tautou
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 8
10.04.2014, 01:35  [ТС] #5
Спасибо, теперь понятны мои ошибки.
0
10.04.2014, 01:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2014, 01:35
Привет! Вот еще темы с ответами:

Область видимости в классах - C++
Почему следующий пример выдает такой результат: Bar::testPrivate Bar::testPublic Я полагал он должен вывести: ...

Область видимости файла - C++
Мне не дает покоя вот такой вопрос: Проект состоит из нескольких файлов .cpp. Есть несколько .h файлов, содержащих определения...

Область видимости и указатели - C++
Разбираю пример Иногда возникают ситуации, когда значение локальной переменной за пределами блока, в котором она объявлена. Как быть...

Область видимости переменных - C++
Не компилируется программа, пишет, что count не является однозначным... #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.