Указатели на структуру - C (СИ)
Формулировка задачи:
Сможет ли кто нибудь объяснить почему значение workers[2].name выводит Петров а не Иванов?
#include<stdio.h> #include<conio.h> struct man { char name[20];} workers[] = { { "Иванов", 200 }, { "Петров", 180 }, { "Сидоров", 150 } }, *wptr; main() { system("chcp 1251 > nul"); struct man *ptr, save; ptr=wptr=workers+1; save=workers[2];workers[2]=*wptr;*wptr=save; printf( "%c %s\n", *workers[1].name,workers[2].name); getch(); }
Решение задачи: «Указатели на структуру»
textual
Листинг программы
#include<stdio.h> #include<conio.h> struct man { char name[20];} workers[] = { { "Иванов", 200 }, { "Петров", 180 }, { "Сидоров", 150 } }, *wptr; main() { system("chcp 1251 > nul"); struct man *ptr, save; ptr=wptr=workers+1; /*save=workers[2];*/workers[2]=*wptr;/**wptr=save;*/ printf( "%c %s\n", *workers[1].name,workers[2].name); getch(); }
Объяснение кода листинга программы
- Объявление структуры
man
с полемname
типаchar
длиной 20 символов. - Объявление массива структур
workers
типаman
с размером 3 и инициализация его элементов значениями по умолчанию. - Объявление указателя
wptr
на первый элемент массиваworkers
. - В функции
main()
производится установка кодировки символов в 1251 с помощью командыsystem()
. - В функции
main()
производится инициализация указателяptr
значениемwptr
. - В функции
main()
производится попытка присвоить указателюwptr
значениеworkers[2]
, но данная строка кода не выполняется. - В функции
main()
производится попытка присвоить элементу массиваworkers[2]
значение*wptr
, но данная строка кода не выполняется. - В функции
main()
производится попытка присвоить указателюwptr
значениеsave
, но данная строка кода не выполняется. - В функции
main()
происходит вывод на экран значения поляname
первого элемента массиваworkers
и значения поляname
второго элемента массиваworkers
. - В функции
main()
производится ожидание нажатия клавиши с помощьюgetch()
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д