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

Передача всего массива в функцию - C++

Восстановить пароль Регистрация
 
 
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
21.08.2013, 15:05     Передача всего массива в функцию #1
Начал изучать алгоритмы сортировки и поиска, решил сделать программу для тестирования работы сортировки и поиска на производительность, по времени (по нагрузке на ЦП и ОП пока что мозгов не хватает).
И возникла проблема, вот я из своей программы выделил новую программу, убрав весь лишний код, оставил только то, где происходит косяк:

Кликните здесь для просмотра всего текста
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
39
40
41
42
43
44
45
46
#include <iostream> 
using std::cin;
using std::cout;
using std::endl;
 
#include <time.h>
 
#include <windows.h>
 
const int dlina = 1000;
 
 
void One(const int *);
void Two(int *);
 
int main()
{
setlocale(LC_ALL,"");
 
int test[dlina];
 
for (int i = 0; i < dlina; i++ ) 
{ test[i] = (1 + rand() % 1000); } 
 
One(test);
 
system("pause");
return 0;
}
 
 
void One(const int *test1)
{
int temp[dlina];
*temp = *test1;
 
Two(temp);
}
 
 
void Two(int *test2)
{
for (int i = 0; i < dlina; i++ ) 
{ cout << test2[i] << " "; } 
cout << endl;
}


Я знаю что косяк происходит в строчке 37, что в Two передается что то не то, подскажите как сделать что бы передавалось нормально и подскажите почему возникает такой косяк, все в принципе сделано по аналогии с One, если взять код из строчек 43-45 и перенести в функцию One, а Two удалить, то все будет работать.


И еще вопрос, как я понял я в void One передаю ссылку на массив, т.е. если я в void One изменю полученный массив (test1) то у меня изменится и массив test из main, а если мне нужно что бы он не по ссылке передавался, а копировался, как быть?

PS то, что я передаю не по ссылке, а передаю указатель в котором хранится адрес на массив test из main, я в курсе, для простоты я написал что передаю по ссылке.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2013, 15:05     Передача всего массива в функцию
Посмотрите здесь:

C++ передача массива в функцию
C++ Передача в функцию массива
C++ Передача массива в функцию
Передача массива структур в функцию не указывая размера массива C++
Передача массива в функцию C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
21.08.2013, 17:37  [ТС]     Передача всего массива в функцию #21
salam, alsav22, да, это насчет названия или насчет глобальной переменной?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
21.08.2013, 18:32     Передача всего массива в функцию #22
Цитата Сообщение от alsav22 Посмотреть сообщение
Это насчёт названия переменной?
ага.

Добавлено через 9 минут
VLK, что за компилятор на скрине?
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
21.08.2013, 18:34  [ТС]     Передача всего массива в функцию #23
Цитата Сообщение от salam Посмотреть сообщение
VLK, что за компилятор на скрине?
Microsoft Visual Studio 2012
salam
21.08.2013, 18:36
  #24

Не по теме:

Цитата Сообщение от VLK Посмотреть сообщение
Microsoft Visual Studio 2012
модно...

VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
21.08.2013, 18:38  [ТС]     Передача всего массива в функцию #25
ну а че, все по русски, ошибки по русски, подчеркивает ошибки, не знаю что там некоторые ищут себе приключений во всяких Code::Blocks, Emacs и т.д.
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
21.08.2013, 18:47     Передача всего массива в функцию #26
Цитата Сообщение от VLK Посмотреть сообщение
не знаю что там некоторые ищут себе приключений во всяких Code::Blocks, Emacs и т.д.
не забывайте, что Visual Studio будет компилировать только то, что одобряет Microsoft. кому-то предпочтительнее иметь возможность работать с первозданным C++.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.08.2013, 12:16     Передача всего массива в функцию #27
Цитата Сообщение от VLK Посмотреть сообщение
ну а че, все по русски, ошибки по русски, подчеркивает ошибки, не знаю что там некоторые ищут себе приключений во всяких Code::Blocks, Emacs и т.д.
дык и переменные называй по-русски, VS должна схавать
C++
1
int длина;
только не удивляйся когда тебе никто не ответит на форуме
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
22.08.2013, 14:06  [ТС]     Передача всего массива в функцию #28
Jupiter, во-первых именно так я не писал, я писал dlina

во-вторых:
ладно, у меня плохое знание английского, а лучше сказать я его не знаю и сложилось так что у меня нет времени его учить, при этом надо учить С++, а еще лучше сказать я С++ должен был знать еще вчера, как быть?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2013, 14:18     Передача всего массива в функцию
Еще ссылки по теме:

Передача двухмерного массива из функцию в функцию C++
Передача массива в функцию C++
Передача массива в функцию C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.08.2013, 14:18     Передача всего массива в функцию #29
Цитата Сообщение от salam Посмотреть сообщение
не забывайте, что Visual Studio будет компилировать только то, что одобряет Microsoft. кому-то предпочтительнее иметь возможность работать с первозданным C++.
В какой-то литературе (не помню в какой), мне попадался совет иметь под рукой два компилятора. Например, делать проект в студии, к которой привык, и дополнительно проверять код в не microsoft компиляторе (напимер, в mingv, который считается более близким к "первозданному C++"), чтобы исключить специфику microsoft.
Yandex
Объявления
22.08.2013, 14:18     Передача всего массива в функцию
Ответ Создать тему
Опции темы

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