Функция как член структуры - 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