2013-07-27 2 views
0
struct abc 
{ 
    char name[20]; 
    int studno; 
    float tax; 
} rec1, rec2; 

Я только начал работу, и учитель не учит хорошо, мне нужна помощь в разъяснении кодов. Поправьте меня, если я ошибаюсь.требуется объяснение в структуре C программирование, не понимает код

Итак, struct abc = имя структуры? и содержит 3 поля, массив, целое число для ученика нет и плавающий тип для налога и что такое rec1, rec2 for ?? и Если rec1, rec2 оба являются * rec1, * rec2, какая разница?

Большое спасибо

ответ

2

ВОПРОСЫ:

  1. Является struct abc имя этой структуры? Да, это так.
  2. struct abc содержит три поля? Да, да. Элементами структуры являются: name (массив символов фиксированного размера 20), целое число, которое содержит номер студента: studno и tax - это переменная с плавающей точкой.
  3. Что такое rec1 и rec2?rec1 и rec2 являются просто переменными экземплярами struct abc. Это сокращенный способ автоматического объявления двух переменных одновременно с определением структуры. Например, чтобы объявить переменную позже, используя тот же определение структуры, вы могли бы сделать это следующим образом:

    struct abc mystruct = {};//initialize the struct variable mystruct 
    
  4. Если rec1 и rec2 оба *rec1 и *rec2 - какая разница? В этом случае вы создали две переменные указателя типа struct abc. Это означает, что они могут указывать на переменные или экземпляры struct abc, а не rec1 и rec2, которые являются только экземплярами struct abc.

ОБСУЖДЕНИЕ:

для пункта 4), на практике это означает, что:

Пример 1

struct abc mystruct = {}; 
mystruct.name = "My Name"; 

Однако, так как указатель может точка в память, и rec1 и rec2 являются указателями типа struct abc, это означает, что вы можете указать на переменные или экземпляры struct abc. Общее применение затем будет:

Пример 2

struct abc mystruct = {}; 
mystruct.name = "My Name"; 

struct abc *abc_pointer = &mystruct;//abc_pointer is now _pointing_ to mystruct 

доступа к элементам структуры, а не с помощью оператора точка/доступа, как обычно в регулярной структуре в 1-м и 2-м примерах, вы должны делать по-другому, используя оператор указатель на элемент:

Пример 3:

struct abc *abc_pointer = &mystruct;//abc_pointer is now _pointing_ to mystruct 
abc_pointer->name = "Steve";//because you're pointing to mystruct, you can access and modify the values within. In this case, we're changing the name from "My Name" to "Steve" 

Еще один способ сделать это:

(*abc_pointer).name = "Steve"; 

Конечно, есть намного больше, чем то, что я описал, что вы можете делать с этим знанием и власти. Для получения дополнительной информации по теме прочитайте следующее: http://boredzo.org/pointers/

0

rec1 и rec2 две переменные, которые вы создали с этой struct abc типа.

Вы можете так же легко отделить структуру specificion от переменного создания с:

struct abc { 
    char name[20]; 
    int studno; 
    float tax; 
}; 

struct abc rec1, rec2; 

Если вы должны были определить переменную как:

struct abc *rec3; 

тогда rec3 будет указателем тип, который должен был указывать на переменную типа struct abc.

Смежные вопросы