This word struct means that a new type of data i created in its range. It means that few basic types like int, char, short, long and so on are gathered under one name. In this case the new types name is resource .This means that when you create a object of type resource in the memory are reserved enough bytes for each of the basic types. This code is probably written in C .One of the differences between c and c++ is when you use structs in C you need to use the struct word aswell. In c++ resource will be all you need to use the new type.
charPhone Number double AverageGrade;
This is one of most used examples . This is the way of creating a struct .The name is Student. Each time you create a member of this type in the memory under the name will be reserved place for the values of FirstName, SecondName , ThirdName.PhoneNumber, number and AverageGrade. You can set/get these values by using the operator .(dot)
This means if you have a new student you will create the new student with the line
and you can set/get his number this way
NewStudent.number = 12345
NewStudent.AverageGrade = 6.00
So the answer of your question . This like shows a function called platform_get_resource with three parameters one of type pointer to type resource and 2 basic types .They aren't interesting. The result of this function will be a pointer to type resource (for a pointer instead of the operator . you need my favorite -> Suc* it C#)That's why you have in the for this strange dev->num_resources.
The first line is not terminated by ; because its a definition of the function and this struct resource is the type of the data returned by the function