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

Динамический массив структур и функция - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
axss
0 / 0 / 0
Регистрация: 11.05.2012
Сообщений: 5
11.05.2012, 20:07     Динамический массив структур и функция #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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
//#include <math.h>
#include <time.h>
 
int n,i,j;
 
struct klass
{
    char k[4][255];
};
 
void sort(klass* s)
{
    //тут все работает, эта функция не редактирует структуру
}
 
void change(klass* s)
{
   ...
   s[k].k[l]=v;
   s[k]->k[l]=v;
   ...
}
 
int main ()
{system("chcp 1251 > nul");
 
    printf("Введите кол-во записей: ");
    scanf("%d",&n);
 
    klass s[n];
    ...
    sort(s);
    change(s);
}
В обоих случаях выдает ошибку:
Код
24|error: invalid array assignment|
25|error: base operand of '->' has non-pointer type 'klass'|
пробовал также
C++
1
change(&s[0]);
В обоих случаях выдает ошибки.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2012, 20:07     Динамический массив структур и функция
Посмотрите здесь:

Динамический массив структур C++
C++ Динамический массив структур ...
C++ Динамический массив структур
C++ Динамический массив структур
C++ Динамический массив структур
C++ Динамический массив структур
C++ Динамический массив структур
Динамический массив структур C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
11.05.2012, 21:43     Динамический массив структур и функция #2
Цитата Сообщение от axss Посмотреть сообщение
scanf("%d",&n);
klass s[n];
Это не динамический массив, а массив переменной длины(для C++ эта возможность не является стандартной и поддерживается, насколько мне известно, только gcc\MinGW). Динамический массив создаётся с помощью ключевого слова new
C++
1
klass* s = new klass[n];
и удаляется с помощью ключевого слова delete
C++
1
delete[] s;
Цитата Сообщение от axss Посмотреть сообщение
24|error: invalid array assignment|
В С++ нельзя присваивать массивы друг другу, если вам необходимо скопировать строки используйте strcpy
C++
1
2
3
4
5
6
void change(klass* s)
{
   ...
   strcpy(s[k].k[l], v);
   ...
}
Yandex
Объявления
11.05.2012, 21:43     Динамический массив структур и функция
Ответ Создать тему
Опции темы

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