Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/63: Рейтинг темы: голосов - 63, средняя оценка - 4.71
ЧакЭ одобряЭ
 Аватар для Artishok
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767

Указатели на структуры

06.11.2010, 18:20. Показов 13737. Ответов 104
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
type  celltype = record 
elетеt: integer; 
next: ^celltype 
end; 
DICTIONARY = array[0..B-1]  of  ^celltype;
какой аналог этой записи будет на си?
C++
1
2
3
4
5
6
7
typedef struct spis
{
    char *s;
    spis *next;
};
 
typedef struct spis *dict[maxn];
такой?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.11.2010, 18:20
Ответы с готовыми решениями:

Указатели на структуры
Подскажите в чем ошибка...Дело в том когда я в вожу в каждое поле по 1 значению все нормально выводит,но если при в вводе в поле я пишу два...

Указатели и структуры
Здравствуйте. Подскажите, пожалуйста, почему не меня среда ругается. error C2440: =: невозможно преобразовать "Book *" в...

Указатели и структуры
Здравия желаю. Подскажите пожалуйста каким образом осуществляется доступ к полю структуры, если оно является указателем?

104
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.11.2010, 01:19
Студворк — интернет-сервис помощи студентам
если блокнот в уиндоус

Добавлено через 1 минуту
Цитата Сообщение от Artishok
то есть в функцию del его запихать?
код все равно не работает.вылетае с ошибкой
если она узел удаляет, то можно там при удалении узла делать delete []
а в каком он сейчас состоянии, в том же самом ?
0
ЧакЭ одобряЭ
 Аватар для Artishok
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
12.11.2010, 01:43  [ТС]
в таком

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
#include <iostream>
 
 struct spis //ýëåìåíò õåø-òàáëèöû óçåë ñïèñêà
 {
    char *val;
    struct spis *next;
};
 
typedef struct spis *dictionary[10];//êàæäîå dictionary[i]-ðåçóëüòàò õåø-ôóíêöèè
 
 
int ord(char o)//ïåðåâîä ñèìâîëà â êîä
{
 return (unsigned char) o;
}
 
int hash (char *x)//õåø-ôóíêöèÿ
{
 int i,sum=0;
 for(i=0;i<10;i++)
    sum+=ord(x[i]);//ñóììèðóåì êîäû ñèìâîëîâ
  return sum%10; 
}
 
void makenull(dictionary k)//îáíóëåíèå õåø-òàáëèöû
{
    for(int i=0;i<10;i++)
    k[i]=0;
}
 
bool member(char *x,dictionary k)//ïðîâåðêà íà íàëè÷èå
{
    spis *cur;
    cur=k[hash(x)];//íà÷àëüíîå çíà÷åíèå ðàâíî çàãîëîâêó ñåãìåíòà êîòîðîìó ïðèíàäëåæèò x
    while (cur!=0)//ïîêà íå äîéäåò äî êîíöà 
    {
        if (cur->val==x)//åñëè åñòü
         return true;//çíà÷èò åñòü
        else //èíà÷å
         cur=cur->next;//ïåðåìåùàòüñÿ
    }
    return false;
}
 
void insert(char *x,dictionary k)//âòàâêà
{
    
    int symb;//íîìåð ñåãìåíòà
    spis *oldhead;
    char *x1=new char[strlen(x)+1];
    strcpy(x1,x);
    if (!member(x1,k)) //åñëè íåò òî
    {
        symb=hash(x1);//ñîçäàåì êîä äëÿ ñòðîêè
        oldhead=k[symb]; //ñòàðîé ãîëîâå ïðèñâîèòü çíà÷åíèå k-õåøåâñêîãî
        k[symb]=new spis; //íîâûé ýëåìåíò òèïà spis c êîäîì symb
        k[symb]->val=x1; //çàïèñàòü çíà÷åíèå
        k[symb]->next=oldhead; //óêàçàòåëü íà ñëåäóþùèé ýëåìåíò ñäåëàòü íà ñòàðóþ ãîëîâó
    }
}
 
void del(char *x,dictionary k) //óäàëåíèå
{
    int symb;//äëÿ õðàíåíèÿ êîäà 
    spis *cur;//óêàçàòåëü íà ýëåìåíòà òèïà spis
    symb=hash(x);//ïîëó÷àåì êîä äëÿ òîãî ÷òî õîòèì óäàëèòü
    bool f=true;
    if (k[symb]!=0)//åñëè òî ÷òî ïîëó÷åíî íå íîëü
    {
        if (k[symb]->val==x) //åñëè ñëó÷èëîñü ÷òî ýëåìåíò óäàëÿåìûé ãîëîâà
          k[symb]=k[symb]->next; //ãîëîâîé ñòàë áûâøèé next
          else //èíà÷å
          {
            cur=k[symb];//ïðèñâîèì çíà÷åíèå ýëåìåíòà ñ êîäîì symb
            while((cur->next!=0)&&(f))//ïîêà ïî ýòîìó êîäó ïî ñïèñêó íå äîéäåò ïîñëåäíåãî èëè íå íàéäåò
             if (cur->next->val==x)//åñëè ýëåìåíò ñëåäóþùèé èìååò ýòî çíà÷åíèå òî
             {
                cur->next=cur->next->next;//ýëåìåíò ïðåä óêàçûâàåò óæå íå íà íåãî íà çà ñëåäóþùèé çà íèì
                f=false;//öèêë çàâåðøåí
             }
             else
             cur=cur->next;//Ïåðåìåùàåìñÿ ïî ñïèñêó
          }
    }
}
 
int main()
{
   dictionary d;
   char *s;
   cin>>s;
   insert(s,d);
   makenull(d);
}
Добавлено через 6 минут
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
void del(char *x,dictionary k) //óäàëåíèå
{
    int symb;//äëÿ õðàíåíèÿ êîäà 
    spis *cur;//óêàçàòåëü íà ýëåìåíòà òèïà spis
    symb=hash(x);//ïîëó÷àåì êîä äëÿ òîãî ÷òî õîòèì óäàëèòü
    bool f=true;
    if (k[symb]!=0)//åñëè òî ÷òî ïîëó÷åíî íå íîëü
    {
        if (k[symb]->val==x)
         { //åñëè ñëó÷èëîñü ÷òî ýëåìåíò óäàëÿåìûé ãîëîâà
          spis *chuck=k[symb];//äîïîëíèòåëüíîé ïåðåìåííîé çíà÷åíèå "áàøíè"
          k[symb]=k[symb]->next; //ãîëîâîé ñòàë áûâøèé next
          delete chuck;//óäàëåÿì èç ïàìÿòè
         }
          else //èíà÷å
          {
            cur=k[symb];//ïðèñâîèì çíà÷åíèå ýëåìåíòà ñ êîäîì symb
            while((cur->next!=0)&&(f))//ïîêà ïî ýòîìó êîäó ïî ñïèñêó íå äîéäåò ïîñëåäíåãî èëè íå íàéäåò
             if (cur->next->val==x)//åñëè ýëåìåíò ñëåäóþùèé èìååò ýòî çíà÷åíèå òî
             {
                spis *chuck=cur->next;//ïðèñâàèâàåì ïåðåìåííîé çíà÷åíèÿ òîãî êîãî õîòèì óäàëèòü
                cur->next=cur->next->next;//ýëåìåíò ïðåä óêàçûâàåò óæå íå íà íåãî íà çà ñëåäóþùèé çà íèì
                delete chuck;
                f=false;//öèêë çàâåðøåí
             }
             else
             cur=cur->next;//Ïåðåìåùàåìñÿ ïî ñïèñêó
          }
    }
}
немного имзенил delete

я кстати отсутпы ставлю более-менее нормально.это при копировании они смещаются
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.11.2010, 01:58
C++
1
2
3
    char *x1=new char[strlen(x)+1];
    strcpy(x1,x);
    if (!member(x1,k))
утечка памяти
а если оно member ? память осталась выделенной

в функции del удаление элемента должно включать освобождение памяти
у тебя память выделена как для элемента, так и для строки
должно быть два освобождения памяти, первое освобождает память из под строки, а второе - из под узла (ты сделал из под узлов, но их строки остались болтаться)

C++
1
2
3
    char *s;
    cin >> s;
    insert(s, d);
в s нельзя писать, потому что он никуда не указывает, сначала нужно создать буфер, потом установить s на него, а потом уже писать в s (он будет перенаправлять данные в буфер)
0
ЧакЭ одобряЭ
 Аватар для Artishok
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
12.11.2010, 02:02  [ТС]
Цитата Сообщение от accept Посмотреть сообщение
а если оно member ? память осталась выделенной
ну можно добавить else с очисткой памяти

Добавлено через 1 минуту
Цитата Сообщение от accept Посмотреть сообщение
должно быть два освобождения памяти, первое освобождает память из под строки, а второе - из под узла (ты сделал из под узлов, но их строки остались болтаться)
так из узла и удаляется.
а в функции makenull таблица обнуляется.
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.11.2010, 02:02
Цитата Сообщение от Artishok
ну можно добавить else с очисткой памяти
а зачем выделять память, если она не понадобится ?

Цитата Сообщение от Artishok
так из узла и удаляется.
нет, нужно сделать сначала delete [] chuck->val; потому что она не освобождается сама
0
ЧакЭ одобряЭ
 Аватар для Artishok
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
12.11.2010, 02:06  [ТС]
Цитата Сообщение от accept Посмотреть сообщение
сначала delete [] chuck.val
а потом delete chuck

Цитата Сообщение от accept Посмотреть сообщение
а зачем выделять память, если она не понадобится ?
так нужна эта строка или нет?
C++
1
char *x1=new char[strlen(x)+1];
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.11.2010, 02:12
Цитата Сообщение от Artishok
я кстати отсутпы ставлю более-менее нормально.это при копировании они смещаются
потому что их надо делать пробелами, так как в разных программах табуляции могут по-разному показываться, где-то они занимают немного, а где-то чуть-ли не полстраницы

Добавлено через 15 секунд
Цитата Сообщение от Artishok
я кстати отсутпы ставлю более-менее нормально.это при копировании они смещаются
потому что их надо делать пробелами, так как в разных программах табуляции могут по-разному показываться, где-то они занимают немного, а где-то чуть-ли не полстраницы

Добавлено через 2 минуты
Цитата Сообщение от Artishok Посмотреть сообщение
а потом delete chuck

так нужна эта строка или нет?
C++
1
char *x1=new char[strlen(x)+1];
да, перед delete chuck делаешь delete [] chuck->val

эта строка должна быть там, где пошло создание узла, где уже ясно, что узел будет создан
поэтому проверку нужно делать не с x1, а прямо с x, а потом уже внутри условного оператора выделять память и для строки и для узла
1
ЧакЭ одобряЭ
 Аватар для Artishok
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
12.11.2010, 12:19  [ТС]
ладно.завтра доделаю.
надеюсь что хоть работать будет.во вторник сдавать.

Добавлено через 10 часов 0 минут
не пашет после всех исправлений

Добавлено через 53 секунды
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
#include <iostream>
 
 struct spis //элемент хеш-таблицы узел списка
 {
    char *val;
    struct spis *next;
};
 
typedef struct spis *dictionary[10];//каждое dictionary[i]-результат хеш-функции
 
 
int ord(char o)//перевод символа в код
{
    return (unsigned char) o;
}
 
int hash (char *x)//хеш-функция
{
 int i,sum=0;
 for(i=0;i<10;i++)
    sum+=ord(x[i]);//суммируем коды символов
  return sum%10; 
}
 
void makenull(dictionary k)//обнуление хеш-таблицы
{
    for(int i=0;i<10;i++)
    k[i]=0;
}
 
bool member(char *x,dictionary k)//проверка на наличие
{
    spis *cur;
    cur=k[hash(x)];//начальное значение равно заголовку сегмента которому принадлежит x
    while (cur!=0)//пока не дойдет до конца 
    {
        if (cur->val==x)//если есть
         return true;//значит есть
        else //иначе
         cur=cur->next;//перемещаться
    }
    return false;
}
 
void insert(char *x,dictionary k)//втавка
{
    
    int symb;//номер сегмента
    spis *oldhead;
    if (!member(x,k)) //если нет то
    {
        char *x1=new char[strlen(x)+1];
            strcpy(x1,x);
        symb=hash(x1);//создаем код для строки
        oldhead=k[symb]; //старой голове присвоить значение k-хешевского
        k[symb]=new spis; //новый элемент типа spis c кодом symb
        k[symb]->val=x1; //записать значение
        k[symb]->next=oldhead; //указатель на следующий элемент сделать на старую голову
    }
}
 
void del(char *x,dictionary k) //удаление
{
    int symb;//для хранения кода 
    spis *cur;//указатель на элемента типа spis
    symb=hash(x);//получаем код для того что хотим удалить
    bool f=true;
    if (k[symb]!=0)//если то что получено не ноль
    {
        if (k[symb]->val==x)
         { //если случилось что элемент удаляемый голова
          spis *chuck=k[symb];//дополнительной переменной значение хеш
          k[symb]=k[symb]->next; //головой стал бывший next
                 delete chuck;//удалеям из памяти
         }
          else //иначе
          {
            cur=k[symb];//присвоим значение элемента с кодом symb
            while((cur->next!=0)&&(f))//пока по этому коду по списку не дойдет последнего или не найдет
             if (cur->next->val==x)//если элемент следующий имеет это значение то
             {
                spis *chuck=cur->next;//присваиваем переменной значения того кого хотим удалить
                        cur->next=cur->next->next;//элемент пред указывает уже не на него на за следующий за ним
                    delete [] chuck->val;
                    delete chuck;
                        f=false;//цикл завершен
             }
             else
             cur=cur->next;//Перемещаемся по списку
          }
    }
}
 
int main()
{
   dictionary d;
   char *s;
   cin>>s;
   insert(s,d);
   makenull(d);
}
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.11.2010, 13:02
кстати, delete chuck там ещё один есть
указатель переделывай в main'е
0
ЧакЭ одобряЭ
 Аватар для Artishok
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
12.11.2010, 16:34  [ТС]
Цитата Сообщение от accept Посмотреть сообщение
указатель переделывай в main'е
указатель на что?
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.11.2010, 22:49
C++
1
char *s;
0
ЧакЭ одобряЭ
 Аватар для Artishok
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
12.11.2010, 23:10  [ТС]
кароч завтра буду делать код с нуля без перебивания его с паскаля
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.11.2010, 23:40
попробуй проектировать его сверху-вниз
начинаешь с самых главных функций и постепенно переходишь к вспомогательным (когда все главные уже написаны)
0
ЧакЭ одобряЭ
 Аватар для Artishok
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
13.11.2010, 01:55  [ТС]
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
#include <iostream.h>
 
#define maxn 100
 
struct spis
{
    char *s;
    struct spis *next;
};
 
typedef struct spis *dict[maxn];
 
//èç ñèìâîëà â êîä
int transform(char c)
{
    return (int) c;
}
 
 
//õåø-ôóíêöèÿ
int hashfunc(char *x)
{
    int sum=0;
    for (int i=0;i<strlen(x);i++)
    sum+=transform(x[i]);
    return sum%maxn;
}
 
//ïðîâåðêà íàëè÷èÿ
bool check(char *x,dict k)
{
    int symb=hashfunc(x);//íîìåð â òàáëèöå
    spis *elem=k[symb];//ýëåìåíòó òèïà spis çíà÷åíèå ãîëîâû â íîìåðå symb
    while (elem!=0)
    {
        if (elem->s==x)//åñëè íàéäåí âåðíóòü true
         return true;
        else
        elem=elem->next;//ïðîäîëæàòü ïîèñê
    }
    return false;
}
 
void insert(char *x,dict k)//âñòàâëÿåì â ãîëîâó ñïèñêà
{
    if (!check(x,k))
    {
        //k[res] è åñòü ãîëîâà ñïèñêà
        int res=hashfunc(x);//êóäà âñòàâëÿòü íîâóþ ñòðîêó
        spis *elem=new spis;//ñîçäàåì íîâûé ýëåìåíò âñòàâëåíèÿ
        elem->s=x;//çàïèñûâàåì â íåãî äàííûå
        elem->next=k[res];//íîâûé ýëåìåíò óêàçûâàåò íà ñòàðóþ ãîëîâó
        k[res]=elem;//ãîëîâà íîâûé ýëåìåíò
    }
}
 
char del(char *x,dict k)//óäàëåíèå ýëåìåíò èç ñïèñêà
{
    char ret[8]="no elem";
    char ret1[15]="elemet deleted";
    if (check(x,k))
      return *ret;
      else
      {
        int symb=hashfunc(x);
        if(k[symb]->s==x)//åñëè ýëåìåíò ëêàçàëñÿ ãîëîâîé
         {
            
            spis *cur=k[symb];//ïðèñâîèì çíà÷åíèå ãîëîâû
            k[symb]=k[symb]->next;//ãîëîâà ñëåäóþùèé ýëåìåíò
            delete cur;//óäàëÿåòñÿ âñå ÷òî ñîäåðæàë â ñåáå ýëåìåíò(âêëþ÷àÿ äàííûå)
            return *ret1;
         }
         else
          {
            spis *cur=k[symb];//ïðèñâîèì çíà÷åíèå ãîëîâû ÷òîáû í ïîòåðÿòü å¸ èç âèäó
            while (cur->next!=0)//ïîêà íå ýëåìåíò ñ óêàçàòåëåì íà 0 è ôëàã
            {
                if (cur->next->s=x)//åñëè íàéäåò ýëåìåíò ñ óêàçàòåëåì íà òîò ýëåìåíò êîòîðûé íàäî óäàëèòü
                {
                     spis *tmp=cur->next;//çíà÷åíèå óäàëÿåìîãî ýëåìåíò
                     cur->next=cur->next->next;//ïðîèãíîðèðóåì óäàëÿåì ýëåìåíò
                     delete tmp;//óäàëåíèå âñåãî ÷òî ñâÿçàíî ñ ïðåäìåòîì(âêëþ÷àÿ äàííûå â íåì)
                     return *ret1;
                }
            }
          }
      }
}
 
void clear(dict k)//èçìåíèë íåìíîãî ôóíêöèþ.òîé ìíå ïîêàçàëîñü íåäîñòàòî÷íî
{
    for (int i=0;i<maxn;i++)
    {
        if (k[i]!=0)//åñëè â çíà÷åíèè åñòü õîòü ÷òî-òî
        while (k[i]!=0)//ïîêà íå 0
        {
            spis *temp=k[i];//ïåðåìåííàÿ óäàëåíèÿ
            k[i]=k[i]->next;//ïåðåìåùåííàÿ
            delete k[i];//âû÷èùåíèå
        }
    }
        
}
Ну вот что получилось.ну что можно об этом сказать?
кое-что изменил теперь не вылетает с ошибкой

Добавлено через 10 минут
накаркал...теперь вылетает с ошибкой
This application has requested the runtime to terminate it in an unsual way.Please contact the application's support team for more information

могло ли повлиять то что я очистил папку с прогой оставив там только файлы .cpp
там ещё появились файлы .lib. Откуда они взялись?их не было до этого ни разу.были только файлы .o и .exe

Добавлено через 4 минуты
теперь опять стало вылетать с ошибкой
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
13.11.2010, 02:14
Цитата Сообщение от Artishok
Ну вот что получилось.ну что можно об этом сказать?
лучше вернуть то, что было

C++
1
2
3
4
5
//из символа в код
int transform(char c)
{
        return (int) c;
}
это неправильно
0
ЧакЭ одобряЭ
 Аватар для Artishok
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
13.11.2010, 02:19  [ТС]
исправил.
но все равно та БОЛЬШАЯ ошибка.
ну а что не так?
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
13.11.2010, 02:22
что исправил ?
0
ЧакЭ одобряЭ
 Аватар для Artishok
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
13.11.2010, 02:27  [ТС]
transform

Добавлено через 1 минуту
теперь "стандартная ошибка" появилась

Добавлено через 40 секунд
я изменил функцию очистки т.к. в первом варианте оно только голову удаляло
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
13.11.2010, 02:28
да у тебя там всё неправильное
тебе говорили, нужно для узла выделять строку, а ты что написал
1
ЧакЭ одобряЭ
 Аватар для Artishok
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
13.11.2010, 02:28  [ТС]
я изменил функцию очистки т.к. первая обнуляла голову но элементы не удаляла

Добавлено через 30 секунд
вставка почти одинаковая

удалении вообще почти идентично
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.11.2010, 02:28

Структуры и указатели
Привет форумчане, столкнулся вот с такой вот задачкой на структуры: 1. Описать структуру с именем PRICE, содержащую следующие поля: -...

Структуры и указатели
Задался парой вопросов. Возможно, уже где-то задавались, поэтому прошу прощения заранее. Ниже описана структура для однонаправленного...

Структуры указатели ссылки
Приветик! Начну сразу с кода. struct data { std::string guid; std::vector&lt;float&gt; price_history; };

Указатели на структуры и функции
Я собственно не хотел бы заводить очередную тему на полезность/бесполезность указателей но думаю немного таки приоткрою завесу. Да, они...

Структуры и указатели на структуры
Так ли я сделал? #include &lt;iostream&gt; struct S { int i; }; void f1(S*s1,int k=0){ s1-&gt;i=k;};


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru