Функция как член структуры - C (СИ) (75338)
Формулировка задачи:
Нужно сделать функцию-член структуры, которая считает значения переменных, входящих в эту структуру. Вот что я имею:
Если имеются идеи или разобраные похожие предметы - поделитесь.
#include <stdio.h> #include <stdlib.h> int main(void) { struct numbers { int x; int y; int SumNum (struct numbers mystruct) { return (mystruct.x+mystruct.y); }; }massnum[5]; FILE *fp; int i; //чтение if ((fp = fopen("numbers.txt", "rb")) == NULL) { printf("Ошибка при открытии файла!"); return 0; } for (i = 0; i<5; ++i) { if (fread(&massnum[i], sizeof(struct numbers), 1, fp) != 1) { if (feof(fp)) break; printf("Ошибка при чтении файла!"); } } fclose(fp); printf("%d", massnum[2].SumNum(massnum)); return 0; }
Решение задачи: «Функция как член структуры»
textual
Листинг программы
#include <stdio.h> struct point { int x, y; void (*println)(struct point*); }; void println_point(struct point* p){ printf("[%d, %d]\n", p->x, p->y); } int main() { struct point p1 = { 10, 20, &println_point }; p1.println(&p1); return 0; }
Объяснение кода листинга программы
- Включаем заголовочный файл stdio.h для использования функций вывода
- Создаем структуру point с полями x и y типа int и указателем на функцию void (println)(struct point)
- Определяем функцию println_point которая принимает указатель на структуру point и выводит значения полей x и y через printf
- Создаем переменную p1 типа struct point с полями равными 10 и 20 и указателем на функцию println_point
- Вызываем функцию println_point передавая в качестве аргумента адрес переменной p1
- Завершаем программу и возвращаем 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д