Указатели на структуру - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Сможет ли кто нибудь объяснить почему значение workers[2].name выводит Петров а не Иванов?
Листинг программы
  1. #include<stdio.h>
  2. #include<conio.h>
  3. struct man {
  4. char name[20];}
  5. workers[] = {
  6. { "Иванов", 200 },
  7. { "Петров", 180 },
  8. { "Сидоров", 150 }
  9. },
  10. *wptr;
  11. main()
  12. { system("chcp 1251 > nul");
  13. struct man *ptr, save;
  14. ptr=wptr=workers+1;
  15. save=workers[2];workers[2]=*wptr;*wptr=save;
  16. printf( "%c %s\n",
  17. *workers[1].name,workers[2].name);
  18. getch();
  19. }

Решение задачи: «Указатели на структуру»

textual
Листинг программы
  1. #include<stdio.h>
  2. #include<conio.h>
  3. struct man {
  4.             char name[20];}
  5.              workers[] = {
  6.             { "Иванов",  200 },
  7.             { "Петров",  180 },
  8.             { "Сидоров", 150 }
  9.                   },
  10.             *wptr;
  11.  main()
  12.  {  system("chcp 1251 > nul");
  13.  struct man *ptr, save;
  14. ptr=wptr=workers+1;
  15. /*save=workers[2];*/workers[2]=*wptr;/**wptr=save;*/
  16.  printf( "%c %s\n",
  17.          *workers[1].name,workers[2].name);
  18.           getch();
  19.     }

Объяснение кода листинга программы

  1. Объявление структуры man с полем name типа char длиной 20 символов.
  2. Объявление массива структур workers типа man с размером 3 и инициализация его элементов значениями по умолчанию.
  3. Объявление указателя wptr на первый элемент массива workers.
  4. В функции main() производится установка кодировки символов в 1251 с помощью команды system().
  5. В функции main() производится инициализация указателя ptr значением wptr.
  6. В функции main() производится попытка присвоить указателю wptr значение workers[2], но данная строка кода не выполняется.
  7. В функции main() производится попытка присвоить элементу массива workers[2] значение *wptr, но данная строка кода не выполняется.
  8. В функции main() производится попытка присвоить указателю wptr значение save, но данная строка кода не выполняется.
  9. В функции main() происходит вывод на экран значения поля name первого элемента массива workers и значения поля name второго элемента массива workers.
  10. В функции main() производится ожидание нажатия клавиши с помощью getch().

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы