Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 34
1

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

06.05.2013, 00:44. Просмотров 406. Ответов 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 ??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2013, 00:44
Ответы с готовыми решениями:

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

Как передать массив структур в функцию в качестве параметра, чтобы изменения в функции меняли исходный массив?
Допустим есть структура struct Base { int a; int b; int c; }; В...

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

Как передать функции массив в качестве аргумента?
Всем привет! Подскажите, как передать функции массив в качестве аргумента? И как сделать, чтобы...

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

Добавлено через 9 часов 50 минут
Друзья, так в чем может быть причина подскажите!
0
:)
Эксперт С++
4763 / 3257 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
06.05.2013, 13:03 6
Wintsent, вероятно у Вас O1s объявлен в классе TNetOper, но в конструкторе память выделяется под локальный O1s. Поэтому внутри SetO1s идет попытка записи в не выделенную память. По коду точно сказать нельзя, т.к. много нужного урезано.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2013, 13:03

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как в качестве аргумента функции передать массив?
Доброго времени суток! Расскажите, пожалуйста, если не затрудняет, как в качестве аргумента...

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

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

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

Как передать динамический массив из функции в другую функцию
Здравствуйте.Не могу передать массив из функции в функцию сортировки. Подскажите как переделать...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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