Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

C-структуры и указатели

Структуры и указатели языка C

В этом руководстве вы научитесь использовать указатели для доступа к членам структур в программировании на C. Вы также научитесь динамически выделять память для типов структур.

Прежде чем вы узнаете, как использовать указатели со структурами, обязательно ознакомьтесь с этими руководствами:

<час>

C указатели на структуру

Вот как можно создавать указатели на структуры.

struct name {
    member1;
    member2;
    .
    .
};

int main()
{
    struct name *ptr, Harry;
}

Здесь ptr указатель на struct .

<час>

Пример:доступ к членам с помощью указателя

Чтобы получить доступ к членам структуры с помощью указателей, мы используем -> оператор.

#include <stdio.h>
struct person
{
   int age;
   float weight;
};

int main()
{
    struct person *personPtr, person1;
    personPtr = &person1;   

    printf("Enter age: ");
    scanf("%d", &personPtr->age);

    printf("Enter weight: ");
    scanf("%f", &personPtr->weight);

    printf("Displaying:\n");
    printf("Age: %d\n", personPtr->age);
    printf("weight: %f", personPtr->weight);

    return 0;
}

В этом примере адрес person1 хранится в personPtr указатель с использованием personPtr = &person1; .

Теперь вы можете получить доступ к членам person1 используя personPtr указатель.

Кстати,

<час>

Динамическое выделение памяти для структур

Прежде чем продолжить этот раздел, мы рекомендуем вам проверить выделение динамической памяти C.

Иногда количество объявленных вами структурных переменных может быть недостаточным. Возможно, вам потребуется выделить память во время выполнения. Вот как этого можно добиться в программировании на C.

Пример:динамическое выделение памяти для структур

#include <stdio.h>
#include <stdlib.h>
struct person {
   int age;
   float weight;
   char name[30];
};

int main()
{
   struct person *ptr;
   int i, n;

   printf("Enter the number of persons: ");
   scanf("%d", &n);

   // allocating memory for n numbers of struct person
   ptr = (struct person*) malloc(n * sizeof(struct person));

   for(i = 0; i < n; ++i)
   {
       printf("Enter first name and age respectively: ");

       // To access members of 1st struct person,
       // ptr->name and ptr->age is used

       // To access members of 2nd struct person,
       // (ptr+1)->name and (ptr+1)->age is used
       scanf("%s %d", (ptr+i)->name, &(ptr+i)->age);
   }

   printf("Displaying Information:\n");
   for(i = 0; i < n; ++i)
       printf("Name: %s\tAge: %d\n", (ptr+i)->name, (ptr+i)->age);

   return 0;
}

Когда вы запустите программу, вывод будет:

Enter the number of persons:  2
Enter first name and age respectively:  Harry 24
Enter first name and age respectively:  Gary 32
Displaying Information:
Name: Harry	Age: 24
Name: Gary	Age: 32

В приведенном выше примере n создается количество структурных переменных, где n вводится пользователем.

Чтобы выделить память для n количество структурных лиц , мы использовали,

ptr = (struct person*) malloc(n * sizeof(struct person));

Затем мы использовали ptr указатель на доступ к элементам person .


Язык C

  1. Ключевые слова и идентификаторы C#
  2. Класс и объект С#
  3. Абстрактный класс и метод С#
  4. Частичный класс C# и частичный метод
  5. Запечатанный класс и метод С#
  6. C# структура
  7. C Ключевые слова и идентификаторы
  8. C указатели
  9. Связь между массивами и указателями
  10. C Pass адреса и указатели