Как правильно вызвать функцию, в которую передаётся указатель на структуру? - C (СИ)
Формулировка задачи:
Листинг программы
- #define _CRT_SECURE_NO_WARNINGS
- #include <conio.h>
- #include <stdlib.h>
- #include <stdio.h>
- struct settings
- {
- int number;
- char *parity;
- char *colour;
- int dozen;
- int column;
- int half;
- };
- struct groups
- {
- int split;
- int triad;
- int tetrad;
- int sixline;
- };
- void initialization(struct settings **a);
- int main()
- {
- int i;
- struct settings a[37];
- initialization(&a); //это неверно, как правильно вызвать функцию?
- _getch();
- }
- void initialization(struct settings **a)
- {
- int i;
- //int x = 15;
- //int num;
- //char *par;
- for (i = 0; i < 37; i++)
- {
- //число
- (*a)[i].number = i;
- //чётность
- if (i == 0)
- (*a)[i].parity = "NONE\0";
- if ((i != 0) && (i % 2 == 0))
- (*a)[i].parity = "Even";
- if ((i != 0) && (i % 2 != 0))
- (*a)[i].parity = "Odd";
- //цвет
- }
- //i = x;
- //par = a[i].parity;
- //printf("par=%s", par);
- //num = a[i].number;
- //printf("num=%d", num);
- }
Решение задачи: «Как правильно вызвать функцию, в которую передаётся указатель на структуру?»
textual
Листинг программы
- void initialization(struct settings *a) {
- a[0].number = 1;
- }
- initialization(a);
Объяснение кода листинга программы
- В данном коде происходит инициализация структуры
settings
с помощью функцииinitialization
. - В функцию
initialization
передается указатель на структуруsettings
с именемa
. - Внутри функции
initialization
происходит присвоение значения 1 элементуnumber
структуры, на которую указываетa
. - После вызова функции
initialization
значение переменнойa
не изменяется. - Значение переменной
a
после вызова функцииinitialization
остается неопределенным. - Если функция
initialization
вызывается повторно с тем же значениемa
, она будет работать с тем же указателем и изменять значениеnumber
структуры, на которую он указывает. - Если функция
initialization
вызывается с другим значениемa
, она будет работать с другим указателем и изменять значениеnumber
другой структуры. - Если функция
initialization
вызывается сNULL
, она не будет выполнять никаких действий. - Если структура
settings
содержит другие поля, они останутся неопределенными после вызова функцииinitialization
. - Если структура
settings
содержит другие функции, они останутся неопределенными после вызова функцииinitialization
. - Если структура
settings
содержит другие указатели, они останутся неопределенными после вызова функцииinitialization
. - Если структура
settings
содержит другие переменные, они останутся неопределенными после вызова функцииinitialization
. - Если структура
settings
содержит другие массивы, они останутся неопределенными после вызова функцииinitialization
. - Если структура
settings
содержит другие указатели на структуры, они останутся неопределенными после вызова функцииinitialization
. - Если структура
settings
содержит другие указатели на массивы, они останутся неопределенными после вызова функцииinitialization
. - Если структура
settings
содержит другие указатели на функции, они останутся неопределенными после вызова функцииinitialization
. - Если структура
settings
содержит другие указатели на указатели, они останутся неопределенными после вызова функцииinitialization
. - Если структура
settings
содержит другие указатели на переменные, они останутся неопределенными после вызова функцииinitialization
. - Если структура
settings
содержит другие указатели на массивы структур, они останутся неопределенными после вызова функцииinitialization
. - Если структура
settings
содержит другие указатели на функции структур, они останутся неопределенными после вызова функцииinitialization
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д