Указатели на структуру - 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();
    }

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

  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
Похожие ответы