Как правильно вызвать функцию, в которую передаётся указатель на структуру? - 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.