Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.82
gGrn-7DA
мну довольно <(-__-)l
205 / 194 / 1
Регистрация: 17.01.2010
Сообщений: 2,397
Завершенные тесты: 1
#1

typedef struct{} *type; - C (СИ)

12.02.2012, 20:45. Просмотров 2226. Ответов 6
Метки нет (Все метки)

правильно ли я поступаю?
Правильно ли выделяю память?
требуется ли здесь typedef?
В конечном итоге мне нужен будет массив из Polynomial.
C
1
2
3
4
5
6
7
8
typedef struct{
   ldouble *factors;
   int power;
} *Polynomial;
const double eps = 0.000001;
//...
   Polynomial polinom = (Polynomial)malloc(sizeof(Polynomial));
   polinom->factors=(ldouble *)malloc(sizeof(ldouble)*count);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2012, 20:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос typedef struct{} *type; (C (СИ)):

typedef struct X{X* pX;}X; - C (СИ)
Собственно сабж: typedef struct X{ X* ptrX; }X; Когда происходит объявление ptrX тип X еще не объявлен. Как сделать...

typedef struct Foo или struct Foo - C (СИ)
В чём разница между: typedef struct { int a; }Foo; и struct Foo { int a; }

Без использования typedef все работает. При добавлении typedef — более 100 ошибок - C (СИ)
Есть программа, с описанием структуры и функций, работающими с ней. Без использования typedef все работает. При добавлении typedef - более...

Struct sockaddr vs. struct sockaddr_in - C (СИ)
Вопрос,связанный с переносимостью кода на другие платформы. Читаю эту книжку http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html...

Как правильнее обозначать указатели: TYPE* value или TYPE *value? - C (СИ)
полный пустяк, но не дает мне покоя уже давно: как правильнее обозначать указатели: TYPE* value или TYPE *value? видел много где и так и...

Error: array type has incomplete element type - C (СИ)
в функции выдает ошибку \arifm.c|4|error: array type has incomplete element type| подправьте пожалуйста main #include...

6
Байт
Эксперт C
17715 / 11736 / 1872
Регистрация: 24.12.2010
Сообщений: 23,540
12.02.2012, 20:51 #2
я бы сделал так
C++
1
2
3
4
5
6
7
8
typedef struct{
   ldouble *factors;
   int power;
} Polynomial;
const double eps = 0.000001;
//...
   Polynomial *polinom = (Polynomial *)malloc(sizeof(Polynomial));
   polinom->factors=(ldouble *)malloc(sizeof(ldouble)*count);
1
lemegeton
2933 / 1362 / 136
Регистрация: 29.11.2010
Сообщений: 2,725
12.02.2012, 20:54 #3
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
правильно ли я поступаю?
С точки зрения стиля, лучше определить тип Polynomial отдельно от типа указателя.

Цитата Сообщение от gGrn-7DA Посмотреть сообщение
Правильно ли выделяю память?
Нет, неправильно.
Polynomial -- указатель на структуру. Значит его размер равен размеру указателя.
(Polynomial)malloc(sizeof(Polynomial)) -- выделение памяти под указатель на структуру.

Цитата Сообщение от gGrn-7DA Посмотреть сообщение
требуется ли здесь typedef?
typedef поможет не писать везде ключевое слово struct.
1
Байт
Эксперт C
17715 / 11736 / 1872
Регистрация: 24.12.2010
Сообщений: 23,540
12.02.2012, 20:54 #4
Только по использовании не забудь удалить сначала factors, а потом polynom
0
gGrn-7DA
мну довольно <(-__-)l
205 / 194 / 1
Регистрация: 17.01.2010
Сообщений: 2,397
Завершенные тесты: 1
12.02.2012, 20:59  [ТС] #5
Сомневался надо ли тут разименовывание...тайпдеф для меня нов.
да, забыл
C
1
typedef long double ldouble;
мне затем потребуется работать с массивом этих полиномов.
пойдет ли такое объявление?
C
1
2
Polynomial *polinom = (Polynomial *)malloc(sizeof(Polynomial)*count);
polinom[i].factors=(ldouble *)malloc(sizeof(ldouble)*count);
Не будет ли проблем с памятью?

Добавлено через 2 минуты
Цитата Сообщение от lemegeton Посмотреть сообщение
С точки зрения стиля, лучше определить тип Polynomial отдельно от типа указателя.
т.е. так?
C
1
2
struct s{};
typedef s typeS;
0
lemegeton
2933 / 1362 / 136
Регистрация: 29.11.2010
Сообщений: 2,725
12.02.2012, 21:05 #6
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
Сообщение от lemegeton
С точки зрения стиля, лучше определить тип Polynomial отдельно от типа указателя.
т.е. так?
Код C
1
2
struct s{};
typedef s typeS;
Т.е. как у Байта в коде. Тайпдеф структуры, а не указателя на структуру.
Нет особых причин не писать
C
1
2
3
typedef struct StructType {
  ...
} StructType;
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
Polynomial *polinom = (Polynomial *)malloc(sizeof(Polynomial)*count);
polinom[i].factors=(ldouble *)malloc(sizeof(ldouble)*count);
Это объявление корректно.
Главное, не забыть освобождать сначала factors, а затем polinom.
1
gGrn-7DA
мну довольно <(-__-)l
205 / 194 / 1
Регистрация: 17.01.2010
Сообщений: 2,397
Завершенные тесты: 1
12.02.2012, 21:09  [ТС] #7
Спасибо.
0
12.02.2012, 21:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2012, 21:09
Привет! Вот еще темы с ответами:

Не работает typedef - C (СИ)
Приветствую. Предполагаю что ошибка дурадская, но найти ее не могу #define MAX_SIZE_NAME 30 #define NUMBER_OF_MARK 4 typedef...

Typedef строка - C (СИ)
#include &lt;stdio.h&gt; typedef char string; // эта строка обязательна (по заданию) void concat(string *s1, string *s2) { while(*s1)...

typedef sruct c - C (СИ)
#include &lt;stdio.h&gt; typedef struct { char name, zveno; int quanity; }Otdel; int main(int argc, char *argv) { Otdel...

Typedef ошибка - C (СИ)
Хочу засунуть в typedef структуру, выдает ошибку Код: typedef struct ComplexObj complex; struct ComplexObj { ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru