Указатели на структуру - 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()
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д