工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
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 にメモリを割り当てるには struct person の数 、使用しました

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

次に、ptr を使用しました person の要素にアクセスするポインタ .


C言語

  1. C# のキーワードと識別子
  2. C# クラスとオブジェクト
  3. C# の抽象クラスとメソッド
  4. C# 部分クラスと部分メソッド
  5. C# の封印されたクラスとメソッド
  6. C# 構造体
  7. C キーワードと識別子
  8. C ポインタ
  9. 配列とポインタの関係
  10. C パスのアドレスとポインター
  11. C構造体