Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2010, 18:52   #1
Baaandit
Заблокирован
 
Регистрация: 10.11.2009
Сообщений: 99
По умолчанию Функции и массивы

Создал функцию заполнения массива случайными числами,у которой выходной параметр должен быть этот массив. В основной функции пр-мы необходимо получить этот массив и вывести. Но программа выдает ошибки,подскажите что не так?
Код:
#include <clx.h>
#include <iostream>
#include <cstdlib>

#include <ctime>

#pragma argsused
using namespace std;
int mass(int n);
int main()
{
int mas1[10];
mas1[10]=mass(10);

for(int i=0;i<10;i++){
cout<<mas1[i]<<' ';
}
cin.get();
}


int mass(int n){
int mas[n];
int srand(time(0));
for(int i=0;i<10;i++){
mas[i]=rand()%10;
}
return mas;
}

Последний раз редактировалось Baaandit; 20.03.2010 в 18:57.
Baaandit вне форума Ответить с цитированием
Старый 20.03.2010, 19:01   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
int mass(int n)
А возвращаете:
Код:
int*
p51x вне форума Ответить с цитированием
Старый 20.03.2010, 19:02   #3
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Код:
#include <cstdlib>
#include <iostream>

using namespace std;

int* mass(int n);

int main()
{
int *mas1;
mas1=mass(10);

for(int i=0;i<10;i++){
cout<<mas1[i]<<' ';
}

delete []mas1;
cin.get();

return 0;
}


int* mass(int n){
int *mas = new int[n];

for(int i=0;i<10;i++){
mas[i]=rand()%10;
}
return mas;
}
profi вне форума Ответить с цитированием
Старый 20.03.2010, 19:08   #4
Baaandit
Заблокирован
 
Регистрация: 10.11.2009
Сообщений: 99
По умолчанию

Спасибо за помощь. А в моем коде много ошибок было?И как я понял в коде profi используютя динамический массив и указатель на функцию. Со статическим массивом и без указателя на функцию можно реализовать? Новичок в С++ так что многое не понимаю).
Baaandit вне форума Ответить с цитированием
Старый 20.03.2010, 19:10   #5
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Baaandit почитай Стивен Прата. Лекции и практика С++.
profi вне форума Ответить с цитированием
Старый 20.03.2010, 20:19   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
указатель на функцию
Где вы его увидели?
p51x вне форума Ответить с цитированием
Старый 20.03.2010, 21:10   #7
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Статический массив будет уничтожен после завершения работы функции. После этого вы уже не сможете контролировать область памяти, в которой он располагался. (Ну то есть, конечно, отчасти сможете, если захотите... Но зато никак не сможете контролировать последствия такой деятельности)
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 20.03.2010, 23:56   #8
Baaandit
Заблокирован
 
Регистрация: 10.11.2009
Сообщений: 99
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Где вы его увидели?
int* mass(int n)-что такое не понял?
Baaandit вне форума Ответить с цитированием
Старый 20.03.2010, 23:58   #9
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
Сообщение от Baaandit Посмотреть сообщение
int* mass(int n)-что такое не понял?
Функция, которая возвращает переменную типа "указатель на int"
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 21.03.2010, 00:07   #10
Baaandit
Заблокирован
 
Регистрация: 10.11.2009
Сообщений: 99
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
Функция, которая возвращает переменную типа "указатель на int"
Вот уже понятнее.А потом один указатель присваиваем другому?
Код:
mas1=mass(10)
И так добираемся до элемента массива например 2 -mas1[1] или так
*(mas1+1).
Baaandit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы и функции в Visual С++ Vanja Visual C++ 4 11.01.2010 15:26
Массивы и функции на Си Wertex Помощь студентам 5 17.09.2009 23:59
Delphi,массивы, процедуры и функции Annn Помощь студентам 1 19.06.2009 01:50
Массивы, процедуры/функции Вампирёк Помощь студентам 1 16.03.2009 10:15