мета-данные страницы
  •  

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
c:c_ultimate_guide:structs [2025/10/25 14:31] radi0devc:c_ultimate_guide:structs [2025/11/09 12:07] (текущий) – внешнее изменение A User Not Logged in
Строка 32: Строка 32:
 при таком обявлении переменной __можно не указывать имя__ структуры. при таком обявлении переменной __можно не указывать имя__ структуры.
  
-определение структуры через typedef:+определение структуры через typedef (тн псевдоним структуры):
 <code c> <code c>
 #include <stdio.h> #include <stdio.h>
Строка 85: Строка 85:
   struct person tom = {23, "Tom"};   struct person tom = {23, "Tom"};
   printf("Age: %d \t Name: %s", tom.age, tom.name);   printf("Age: %d \t Name: %s", tom.age, tom.name);
 +  return 0;
 +}
 +</code>
 +
 +===== Составные литералы =====
 +
 +Составные литералы (compound literals) позволяют сократить код и использовать литералы, которые представляют структуру, без определения переменной структуры
 +
 +<code c>
 +#include <stdio.h>
 + 
 +typedef struct {
 +  int x;
 +  int y;
 +} Point; 
 + 
 +void print_point(Point p) {
 +  printf("(X:%d; Y:%d)\n", p.x, p.y);
 +}
 + 
 +Point create_point(int x, int y) {
 +  return (Point) {x, y}; // возвращаем строковой литерал
 +}
 +int main() {
 +  Point p = create_point(170, 150);
 +  print_point(p);
   return 0;   return 0;
 } }
 </code> </code>