Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
tautou
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 8
09.04.2014, 22:11     Передача данных в другую область видимости #1
Задание
Кликните здесь для просмотра всего текста
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, хранящий адрес выделенной мне памяти, в последующих функциях, являющимися другими областями видимости.
Спасибо
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2014, 22:11     Передача данных в другую область видимости
Посмотрите здесь:

Область видимости в С++ C++
Область видимости C++
C++ Область видимости переменной
C++ Область видимости
Область видимости C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
09.04.2014, 22:15     Передача данных в другую область видимости #2
tautou, вообще-то такие задачи следует решать с использованием классов и полей данных. Если конечно не хочется извращаться с возвратом по ссылочному аргументу.
tautou
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 8
09.04.2014, 22:29  [ТС]     Передача данных в другую область видимости #3
Если я не ошибаюсь,классы это пользовательские типы данных, но мы такого не учили.
Я вот думал использовать инициализацию последующих функций в конце предидущей. (Это называется рекурсией кажется ) Т.е. каждая функция запускает следующую после себя функцию и значение можно передать через сигнатуру инициализируемрй функции.(перегрузка)
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
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
tautou
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 8
10.04.2014, 01:35  [ТС]     Передача данных в другую область видимости #5
Спасибо, теперь понятны мои ошибки.
Yandex
Объявления
10.04.2014, 01:35     Передача данных в другую область видимости
Ответ Создать тему
Опции темы

Текущее время: 01:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru