Как правильно вызвать функцию, в которую передаётся указатель на структуру? - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д