Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
lawistok
0 / 0 / 0
Регистрация: 14.12.2014
Сообщений: 8
1

Возможна ли инициализация связного списка в функции void (void)?

18.12.2014, 00:08. Просмотров 473. Ответов 5
Метки нет (Все метки)

Всем привет. В связи с полученным в универе заданием возник вопрос, а возможна ли в принципе инициализация связного списка с помощью функции void function(void) в Си? Задание утверждает, что да, но я слабо себе это представляю.
Вобщем, код примерно такой:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
void      Init             ( void )
 { /* todo */ }
 
int main ( int argc, char * argv [] )
 {
 
Init ();
 
return 0;
}
Возможно ли объявить в функции Init структуру так, что бы потом можно было ее использовать в других частях программы?
Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2014, 00:08
Ответы с готовыми решениями:

Реализовать аналог `void *memmove(void *to, void *from, size_t n)`
Добрый день, подскажите пожалуйста, как реализовать такой метод самостоятельно? который копирует...

Инициализация двумерного массива в функции типа void
void input(int *n, int *m); void initializatoin_remember(int ***rememberX, int n); int main() {...

Ошибка: error C2143 функция void deleteEnd(void)
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;string.h&gt; #include&lt;conio.h&gt; #define MAXNAME 56...

Использование функции void
Вопрос больше теоретический. Допустим у меня есть функция void Dec(dec1); Я её вызываю в функии...

Void в аргументах функции
Здравствуйте. В книге Праты Язык программирования C, функция представляется таким образом: int...

5
Jewbacabra
Эксперт PHP
3787 / 3122 / 1371
Регистрация: 24.04.2014
Сообщений: 9,492
18.12.2014, 00:12 2
Цитата Сообщение от lawistok Посмотреть сообщение
а возможна ли в принципе инициализация связного списка с помощью функции void function(void) в Си?
Возможна, но это не хорошо. Через глобальные переменные
1
lawistok
0 / 0 / 0
Регистрация: 14.12.2014
Сообщений: 8
18.12.2014, 10:04  [ТС] 3
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Возможна, но это не хорошо. Через глобальные переменные
А можете подсказать, как это делается? У меня почему-то не выходит.
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
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
typedef struct BaDa { //Структура БД
    int ID;
    char * Name;
    int ID1;
    int ID2;
    struct BaDa * Next;
} BADA;
BaDa *head=NULL; // Указатель на начало списка
 
void      Init             ( void )
 { 
  BaDa *list=(BaDa*) malloc(sizeof(BaDa));
  (*head)=list;
 }
 
int main ( int argc, char * argv [] )
 {
 
Init ();
 
return 0;
}
Компилятор ругается, говорит:
Bash
1
2
3
4
5
6
7
8
9
du81.c: In function ‘void Init()’:
du81.c:30:10: error: no match foroperator=’ (operand types are ‘BaDa’ and ‘BaDa*)
   (*head)=list;
          ^
du81.c:30:10: note: candidate is:
du81.c:14:16: note: BaDa& BaDa::operator=(const BaDa&)
 typedef struct BaDa { //Структура БД
                ^
du81.c:14:16: note:   no known conversion for argument 1 from ‘BaDa*’ to ‘const BaDa&
0
Jewbacabra
Эксперт PHP
3787 / 3122 / 1371
Регистрация: 24.04.2014
Сообщений: 9,492
18.12.2014, 11:17 4
Цитата Сообщение от lawistok Посмотреть сообщение
(*head)=list
head = list;
1
sharpey
365 / 155 / 37
Регистрация: 21.09.2008
Сообщений: 517
18.12.2014, 11:30 5
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
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
typedef struct BaDa { //Структура БД
    int ID;
    char *Name;
    int ID1;
    int ID2;
    struct BaDa * Next;
} BADA;
BADA *head=NULL; // Указатель на начало списка
 
void Init(void)
{ 
  BADA *list = (BADA*) malloc(sizeof(BADA));
  head = list;
}
 
int main (int argc, char *argv[])
{ 
  Init(); 
  return 0;
}
На такой код gcc не ругается.
1
xBeSSonik
35 / 29 / 31
Регистрация: 16.11.2014
Сообщений: 90
Завершенные тесты: 1
18.12.2014, 12:07 6
да, возможна
1
18.12.2014, 12:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2014, 12:07

Приведение к void в начале функции
Наткнулся на код в гитхабе: size_t SCPI_Write(scpi_t * context, const char * data, size_t len) {...

Зачем функции main тип void?
Собственно сабж. Просто не понятно, мы в майне пишем return 0, а для этого вроде бы как не нужен...

Вернуть массивы и их размеры из void-функции
Всем привет, я в этом деле новичок. void func(int num,int *arr1, int *arr2) { int size=1...


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

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

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