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

Не могу разобраться как передать корректно передать массив из функции в функцию

07.10.2016, 19:54. Показов 1975. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
109
110
111
112
113
//---------------------------------------------------------------------------
 
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
#include<stdlib>
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<iostream.h>
#include <time.h>
using namespace std;
struct MyTDate
{
  unsigned int year;
  unsigned int month;
  unsigned int day;
};
//--------------------------------------------------------------
void init1(MyTDate& date, int year,int month,int day)
{
date.year = year;
date.month = month;
date.day = day;
}
//-------------------------------------------
void init2(MyTDate& date,char *DateStroka){
  date.year = atoi(DateStroka);
  date.month = atoi(DateStroka + 5);
  date.day = atoi(DateStroka + 8);
}
//-------------------------------------------------
void init3(MyTDate& date){
struct tm *theTime;
time_t tim;
time(&tim);
theTime = localtime(&tim);
date.year = (theTime->tm_year + 1900);
date.month = (theTime->tm_mon + 1);
date.day = theTime->tm_mday; ;
}
//---------------------------------------------------
 
char toPChar(MyTDate date){
int year = date.year;
int month = date.month;
int day = date.day;
   int system = 10;
   int system1 = 10;
   int system2 = 10;
   char Lenght[20];
   char Lenght1[20];
   char Lenght2[20];
   char *p ,*q ,*l ;
   p = itoa(year , Lenght , system );
   q = itoa(month , Lenght1 , system1 );
   l = itoa(day , Lenght2 , system2 );
   char str[80];
  strcpy (str,p);
  strcat (str,q);
  strcat (str,l);
  return *str;
 
}
 
 
 
 
void input(struct MyTDate *MyData)
{  int select;
        cout<<"1.Razdelno,2.stroka,3.online?";
        cin>>select;
    int y,m,d;   //for razdelno
    const int max=11 ;      //for lengh
  char DateStroka[max];     //for lengh
 
        switch (select){
   case 1:
   cout<<"write year,month,day razdelno";
   scanf("%d%d%d",&y,&m,&d);
   init1(*MyData,y,m,d);
   break;
        case 2:
        cin.ignore();
        cout<<"pishi year,month,day 4erez tochky";
        cin.get(DateStroka,max);
        init2(*MyData,DateStroka);
        break;
   case 3:
   init3(*MyData);
   break;
 
}
}
 
 
 
void output(struct MyTDate MyData){
char lengh1=toPChar(MyData);
cout<<lengh1;
}
 
int main(int argc, char* argv[])
{          MyTDate Monday;
        input(&Monday);
       
        output(Monday);
      system("PAUSE");
        return 0;
}
//---------------------------------------------------------------------------
Проблема с тем что из функции toPChar в функцию output передается не правильное значение. Я выводил в toPChar , все нормально, вывожу в output выводит какое то левое значение.Если можете помочь, буду благодарен.Просто не очень понимаю, где нужно передавать копии , где указатели и прочее.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.10.2016, 19:54
Ответы с готовыми решениями:

Импорт функции из dll: как корректно передать параметры в функцию?
Есть dll. Там функция, в c++ builder импортирую её: extern &quot;C&quot; __declspec(dllimport) int __stdcall StartSequence(char *lId, int ixId,...

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

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

2
59 / 59 / 53
Регистрация: 05.05.2013
Сообщений: 150
07.10.2016, 20:04
при выходе из toPChar кадр с объявленным массивом из стека удаляется, чтобы этого избежать массив str необходимо выделять в куче:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
char* toPChar(MyTDate date){
int year = date.year;
int month = date.month;
int day = date.day;
   int system = 10;
   int system1 = 10;
   int system2 = 10;
   char Lenght[20];
   char Lenght1[20];
   char Lenght2[20];
   char *p ,*q ,*l ;
   p = itoa(year , Lenght , system );
   q = itoa(month , Lenght1 , system1 );
   l = itoa(day , Lenght2 , system2 );
   char* str = new char[80];
  strcpy (str,p);
  strcat (str,q);
  strcat (str,l);
  return str;
 
}
C++
1
2
3
4
void output(struct MyTDate MyData){
char* lengh1=toPChar(MyData);
cout<<lengh1;
}
когда str больше не будет использоваться необходимо освободить память с помощью
C++
1
delete [] str;
1
1 / 1 / 1
Регистрация: 07.03.2015
Сообщений: 76
07.10.2016, 20:06  [ТС]
Огромная благодарность))А после этого нужно память очищать, или нет?
Увидел, благодарю))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.10.2016, 20:06
Помогаю со студенческими работами здесь

Не могу передать массив в функцию
Ситуация следующая: Хочу сделать функцию для умножения матриц А и В. Т.е. чтобы параметрами функции были два массива А и В 3х3, а...

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

Не могу передать двумерный массив в функцию
Мне нужно взять имеющийся двумерный массив передать его в функцию, преобразовать и вернуть обратно. Вот код: #include...

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

Передать массив в функцию и вернуть из функции
Доброго времени суток. Пытаюсь считать из файлов числа и попарно их перемножить. Проблема в функциях void EnterMassive и void Multi. В...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru