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

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

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

Как передать массив в функции - C++

06.05.2013, 00:44. Просмотров 341. Ответов 5
Метки нет (Все метки)

Здравствуйте друзья! Я переписываю достаточно большую программу с Delphi 7 на C++. Код я уже весь адаптировал, компилятор ошибок не выдает, начал тестировать и понял, что прога пока ничего не выполняет. Причина в следующем(попробую описать проблемное место):
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
.............................
const int O1sc[8] = {1,2,3,4, 5,14,15,23};//в самом начале определяю нужный массив
.................................
int kw1=8;
...............................
//Далее идут классы которые я использую, я их указал так для наглядности
class TNetOper
{
    public:
        int kW;
      
    ............
        public:
            TNetOper();
            .................
            void SetO1s(int*);
           ......................... 
            ~TNetOper();
};
....................
class TGABee
{
    public:
        
..............................
    public:
       TGABee();
 ..............................
       ~TGABee();
};
 
class TModel:public TGABee
{
    public:
.......................
 
    public:
       TModel();
......................................
       ~TModel();
                
};
 
 
 
class TGANOPUser: public TModel
{
public:
    TGANOPUser();
........................
    ~TGANOPUser();
    
};
 
TGANOPUser EA;
.......................................
int main(int argc, char** argv) {
    ...........................
    int *O1s1  = new int [kw1];
    .............................
    
    for (i=0; i<kw1; i++)
        {
          O1s1[i]=O1sc[i];
        } //перезаписываю массив
  .......................................  
cout<<"3"<<endl; // здесь просто начал отладку, "3" выводится
    EA.Net.SetO1s(O1s1);
    cout<<"4"<<endl;// "4" уже не выводится, т.е. прога перестает работать в этом методе
 
 
}
........................................
TNetOper::TNetOper()
{
...............
   kW   = kw1;
...............................
   int *O1s  = new int [kW];
......................................
 
};
 
.................................
 
void TNetOper::SetO1s(int* o1s1)
{
  int i;
  cout<<"1"<<endl;//"1" выводится
  for (i=0; i<kW; i++)
  {
      cout<<2<<endl;//"2" выводится
    O1s[i]=o1s1[i];
    cout<<"5"<<endl;//"5" не выводится
  }
  cout<<"6"<<endl;//"6" не выводится
}
.......................
TNetOper::~TNetOper()
{
//Здесь я ничего не прописывал, может тут надо что то указать???
}
 
TGABee::TGABee()
{
..............................
};
.................................

Вопрос: В чем может быть ошибка? Почему не выводится 4,5,6 ??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2013, 00:44     Как передать массив в функции
Посмотрите здесь:

Не могу разобраться как передать корректно передать массив из функции в функцию - C++
//--------------------------------------------------------------------------- #pragma hdrstop ...

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

Как передать массив из одной функции в другую - C++
Ребят помогите с массивами,алгоритм составил а с языком пока на &quot;ВЫ&quot;. как таскать массив из процедуры в процедуру. перехожу с паскаля...

Как передать массив из одной функции в другую? - C++
Нужна помощь. #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int vod(int a) { int a, i; for (i = 0; i &lt; 12;...

Передать функции массив как несколько параметров - C++
Как передать функции массив как несколько параметров те где каждый элемент будет выступать как отдельный параметр

Как передать динамический массив из функции в другую функцию - C++
Здравствуйте.Не могу передать массив из функции в функцию сортировки. Подскажите как переделать программу : #include &quot;stdafx.h&quot; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
06.05.2013, 00:52     Как передать массив в функции #2
Цитата Сообщение от Wintsent Посмотреть сообщение
cout<<2<<endl;//"2" выводится
Оно вам и не выведет. Т.к двойка без кавычек.
Wintsent
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 34
06.05.2013, 00:54  [ТС]     Как передать массив в функции #3
Это я сейчас опечатался, если я поставлю кавычки 2 конечно выведется, но 5 и 6 не выводятся!
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
06.05.2013, 00:57     Как передать массив в функции #4
Цитата Сообщение от Wintsent Посмотреть сообщение
O1s[i]=o1s1[i];
А вот эта замена для чего вам?
Wintsent
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 34
06.05.2013, 10:55  [ТС]     Как передать массив в функции #5
Просто перезаписываю массив. Так было реализовано в Delphi, я попытался оставить там такой же код, а потом отлаживать.

Добавлено через 9 часов 50 минут
Друзья, так в чем может быть причина подскажите!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2013, 13:03     Как передать массив в функции
Еще ссылки по теме:

Составить прототип функции: Как правильно передать динамический массив по ссылке - C++
В dll библиотеке на экспорт имеется прототип следующей функции: extern &quot;C&quot; __declspec(dllexport) void process(double, double(&amp;), const...

Как передать массив в функцию так, чтобы при выходе из функции он не изменялся? - C++
Задачка: есть строка, которая состоит из символов. Символы соединяються в слова, которые оттделены друг от друга одним или несколькими...

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

как передать структуру в функцию, чтобы после выполнения функции он(массив в данном случае) вернулся измененным? - C++
const int size = 256; struct MARKER { char mark; } void processing(MARKER struct_m) { //тут какие-то изменения...


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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.05.2013, 13:03     Как передать массив в функции #6
Wintsent, вероятно у Вас O1s объявлен в классе TNetOper, но в конструкторе память выделяется под локальный O1s. Поэтому внутри SetO1s идет попытка записи в не выделенную память. По коду точно сказать нельзя, т.к. много нужного урезано.
Yandex
Объявления
06.05.2013, 13:03     Как передать массив в функции
Ответ Создать тему
Опции темы

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