Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 8

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

09.04.2014, 22:11. Показов 1604. Ответов 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)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.04.2014, 22:11
Ответы с готовыми решениями:

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

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

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

4
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
09.04.2014, 22:15
tautou, вообще-то такие задачи следует решать с использованием классов и полей данных. Если конечно не хочется извращаться с возвратом по ссылочному аргументу.
0
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 8
09.04.2014, 22:29  [ТС]
Если я не ошибаюсь,классы это пользовательские типы данных, но мы такого не учили.
Я вот думал использовать инициализацию последующих функций в конце предидущей. (Это называется рекурсией кажется ) Т.е. каждая функция запускает следующую после себя функцию и значение можно передать через сигнатуру инициализируемрй функции.(перегрузка)
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
09.04.2014, 23:04
Лучший ответ Сообщение было отмечено tautou как решение

Решение

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
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 8
10.04.2014, 01:35  [ТС]
Спасибо, теперь понятны мои ошибки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.04.2014, 01:35
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru