steven8Gerrard Ответов: 2

C Программирование основные сомнения


Здравствуйте, я недавно видел синтаксис структуры, который сбивал с толку . Есть ли какие-то структурные функции? Приведенная ниже программа на языке Си имеет тип хранения функций в виде структуры и не завершается ; . Может ли кто-нибудь объяснить мне или направить меня к хорошему учебнику по этому вопросу
struct resource *platform_get_resource(struct platform_device *dev,
                       unsigned int type, unsigned int num)
{
    int i;

    for (i = 0; i < dev->num_resources; i++) {
        struct resource *r = &dev->resource[i];

        if (type == resource_type(r) && num-- == 0)
            return r;
    }
    return NULL;
}


2 Ответов

Рейтинг:
4

Philippe Mori

Это функция, которая возвращает указатель на структуру.

Часто программист будет использовать typedef, например typedef struct resource { ... } resource; а затем просто напишет код, используя это имя.

По существу с typedef struct A { ... } B; следующее Было бы эквивалентно:

struct A * f() { static A a; return &a; }
B * f() { static B b; return &b; }


steven8Gerrard

Спасибо. Очень ценю

Рейтинг:
18

Argonia

Это слово struct означает, что новый тип данных я создал в своем диапазоне. Это означает, что несколько основных типов, таких как int, char, short, long и так далее, собраны под одним именем. В этом случае имя нового типа-resource .Это означает, что при создании объекта типа resource в памяти резервируется достаточное количество байтов для каждого из базовых типов. Этот код, вероятно, написан на языке Си .Одно из различий между c и c++ заключается в том, что при использовании структур в C вам нужно использовать слово struct. В c++ resource будет все, что вам нужно для использования нового типа.

struct Student
{
  int number;
  char[100] FirstName;
  char[100] SecondName;
  char[100] ThirdName;
  char[100]Phone Number //you cant keep the "-" between the digits in an int ;)
  double AverageGrade;
};  // }StudentList [40]; You can define valuables of type Student right after the //declaration

Student NewStudent;

Это один из наиболее часто используемых примеров . Это способ создания структуры .Меня зовут студент. При каждом создании элемента этого типа в памяти под именем будет зарезервировано место для значений FirstName, SecondName , ThirdName.Номер телефона, номер и средний балл. Вы можете установить/получить эти значения с помощью оператора .(точка)
Это означает, что если у вас есть новый ученик, вы создадите нового ученика с помощью строки
Student NewStudent;

и вы можете установить/получить его номер таким образом
NewStudent.number
//For example
NewStudent.number = 12345
NewStudent.AverageGrade = 6.00


Итак, ответ на ваш вопрос . Это как показывает функцию под названием platform_get_resource с тремя параметрами один из типа указатель на тип ресурса и 2 основных типа .Они не интересны. Результатом работы этой функции будет указатель на тип resource (для указателя вместо оператора . вам нужен мой любимый -> Suc* it C#)вот почему у вас есть в for this strange dev->num_resources.
Первая строка не заканчивается на ; Потому что это определение функции, а этот ресурс структуры является типом данных, возвращаемых функцией


steven8Gerrard

Спасибо. Очень ценю