Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2008, 20:36   #1
JET_FLASH
Пользователь
 
Аватар для JET_FLASH
 
Регистрация: 24.09.2007
Сообщений: 33
По умолчанию Указатели Си

Туплю по-страшному. Помогите. Что не так?

Код:
#include <stdio.h>
#include <alloc.h>

typedef void* BaseType1;

typedef struct{
	       BaseType1 Buf[2];
	       unsigned SizeEl; /* Размер элемента стека, определяющийся при инициализации */
	      } Stack;

typedef struct{char Name[10];
	       unsigned Time;
	       char T;
	      }TInquiry;

void InitStack(Stack *s, unsigned Size) /* Инициализация стека */
   {s->SizeEl=Size;
    s->Buf[0]=NULL;
   }

void PutStack(Stack *s, BaseType1 *E) /* Поместить элемент в стек */
   {
    s->Buf[0]=malloc(s->SizeEl);
    s->Buf[0]=*E;
   }

  void GetStack(Stack *s, BaseType1 *E) /* Извлечь элемент из cтека */
   {
       *E=s->Buf[0];
       free(s->Buf[0]);
   }

void main()
 {Stack St;
  TInquiry E1, E;

  E.Name[0]='2';E.Name[1]='e';E.Name[2]='l';E.Name[3]='\0';
  E.Time=65;
  E.T=66;

  InitStack(&St, sizeof(TInquiry));
  PutStack(&St,&E);
  GetStack(&St,&E1);
  printf("\n\n%s %u %u PROVERKA::STACK",E1.Name,E1.Time,E1.T);
  getch();
 }
Вот.
Здесь должно быть E1:=E, но получается мусор.
Могут быть еще ошибки, но меня интересует
s->Buf[0]=*E;
и
*E=s->Buf[0];
Да поможет нам F1. Да сохранит нас F2... Аминь
JET_FLASH вне форума Ответить с цитированием
Старый 31.01.2008, 21:05   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

А вот в этих местах ( *E=s->Buf[0]; и s->Buf[0]=*E; ) стоит разадресацией присваивать? или memmove пойдёт? Строго говоря, там ведь void разадресуется. И, кстати, стоит указывать явно, какой именно unsigned.
B_N вне форума Ответить с цитированием
Старый 31.01.2008, 23:02   #3
JET_FLASH
Пользователь
 
Аватар для JET_FLASH
 
Регистрация: 24.09.2007
Сообщений: 33
По умолчанию

Спасибо. Тема исчерпана.
Да поможет нам F1. Да сохранит нас F2... Аминь
JET_FLASH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатели JOFRIF Общие вопросы C/C++ 2 31.08.2008 18:34
Указатели Принц Общие вопросы C/C++ 2 08.06.2008 16:15
Указатели в Си Иллидан Общие вопросы C/C++ 7 20.02.2008 11:14
Указатели в функции. _LEON_ Общие вопросы C/C++ 4 04.02.2008 10:38
Задачи на массивы и указатели в СИ D@rk_Spirit Общие вопросы C/C++ 3 29.12.2007 08:01