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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2012, 19:44   #1
Unmanner
Пользователь
 
Регистрация: 18.03.2011
Сообщений: 47
По умолчанию Обращение к полям струкруры

Здравствуйте, есть такой рабочий код:

Код:
typedef struct {
	int c;
} EXT_T;

typedef EXT_T * EXT_S_T[255];

typedef struct {
	EXT_S_T *con_to;
} TEST_T;

W32 mp[4] = {20, 30, 40, 90};

int main()
{
	TEST_T *str;
	W32 i, j;
	
	str = (TEST_T) malloc ( sizeof (TEST_T) );
	
	str->con_to = (EXT_S_T *)malloc ( sizeof (EXT_S_T) );
	
	for (i=0; i<4; i++)
	{
		for (j=0; j<255; j++)
		{
			str->con_to[ mp[i] ][j] = (EXT_T *) malloc( sizeof(EXT_T) );
			str->con_to[ mp[i] ][j]->c = 88;
		}
	}
	return 0;
}
Вопрос, как сделать так чтобы обращаться к полю "с" не через "->" а через "."?

Тоесть вот так:
Код:
str->con_to[ mp[i] ][j].c = 88;
Unmanner вне форума Ответить с цитированием
Старый 13.02.2012, 19:55   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

обьявите саму структуру а не указатель на нее.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.02.2012, 20:30   #3
vlados007
Пользователь
 
Регистрация: 13.02.2012
Сообщений: 10
По умолчанию

ну, по-моему нужно записать в таком виде:

имя_структуры.имя_поля

Пример:

Код:
struct stud {
char name[80];
int age;
double b;
} st1, st2;
st1.name=”Ivan”;
st1.age=20;
gets(st2.name);
По крайней мере я все по структурам делал именно так

Последний раз редактировалось ACE Valery; 13.02.2012 в 21:28.
vlados007 вне форума Ответить с цитированием
Старый 13.02.2012, 21:10   #4
Unmanner
Пользователь
 
Регистрация: 18.03.2011
Сообщений: 47
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
обьявите саму структуру а не указатель на нее.
Можете привести пример? Мне важно чтобы память лоцировалать так же.
Unmanner вне форума Ответить с цитированием
Старый 13.02.2012, 21:18   #5
Unmanner
Пользователь
 
Регистрация: 18.03.2011
Сообщений: 47
По умолчанию

Могу немного пояснить почему именно так всё выглядит, дело в том что нужно придумать параллельную реализацию.

То есть у меня есть два поля:

Код:
#ifdef ONE
EXT_S_T *con_to;
#else
EXT_T (*con_to)[255];
#endif
Память под второй указатель выделяется так:
Код:
con_to= (EXT_T (*)[MAX_NUMBER_OF_ENTRIES]) malloc( sizeof(EXT_T) * PORTS * MAX_NUMBER_OF_ENTRIES );
И обращался я к нему через точку. Теперь же у меня есть ещё один такой же указатель, и, чтобы не писать ещё много-много #ifdef (разница будет в в обращении через "." или "->") мне надо как-то так сделать чтобы обращение было через ТОЧКУ.
Unmanner вне форума Ответить с цитированием
Старый 13.02.2012, 22:48   #6
microbit
Форумчанин
 
Аватар для microbit
 
Регистрация: 26.09.2011
Сообщений: 176
По умолчанию

Код:
(*str->con_to[ mp[i] ][j]).c
microbit вне форума Ответить с цитированием
Старый 13.02.2012, 23:03   #7
Unmanner
Пользователь
 
Регистрация: 18.03.2011
Сообщений: 47
По умолчанию

Обязательно чтобы было так:
Код:
str->con_to[ mp[i] ][j].c
иначе, как я уже и говорил будет более 300 строк кода, отличие которого будет лишь в способе обращения..
Unmanner вне форума Ответить с цитированием
Старый 13.02.2012, 23:39   #8
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

если это чистый си - то ночь зимой длинная, а 300 строк неплохой урок.

а ежели это с++, то можно оформить внутри структуры ссылку.

Последний раз редактировалось ACE Valery; 14.02.2012 в 13:25.
_Bers вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
фильтр по двум полям Alex003 Помощь студентам 2 03.12.2011 11:39
Вопрос по полям формы Жменька Microsoft Office Access 16 24.05.2011 10:46
Фильтр по полям Sfera БД в Delphi 6 11.11.2010 10:06
поиск по двум полям denisov PHP 4 23.04.2010 21:50
Уникальность по 3 полям num8er БД в Delphi 3 09.10.2007 09:54