NaaN日記

やったこと、覚えたことを発信する場

構造体でポインタ

構造体型のポインタ変数
書き方
(*変数名).要素名
変数名->要素名
変数名[0].要素名
実際に使ってみる
#include <stdio.h>
#include <string.h>
typedef struct {
    char animal[64];
    char name[64];
    int old;
    int weight;
} animals;

int main(void){
    
    animals data;
    animals *p_data;
    p_data = &data;
    (*p_data).old = 2;   //p_data->old
    strcpy(p_data->animal, "ねこ");  //(*p_data).animal

    printf("%d\n", data.old);
    printf("%s\n", data.animal);
    
    return 0;
}
勿論引数にも入れられる
#include <stdio.h>
#include <string.h>
typedef struct {
    char animal[64];
    char name[64];
    int old;
    int weight;
} animals;

void animals_print(animals *data);

int main(void){
    animals data;
    strcpy(data.animal,"ねこ");
    strcpy(data.name, "きなこ");
    data.old = 2;
    data.weight = 5;
    
    animals_print(&data);
    
    return 0;
}
void animals_print(animals *data){
    
    data->weight = 6;//勿論元の値も書き換わる
    printf("種類:%s\n", data->animal);
    printf("名前:%s\n", data->name);
    printf("年齢:%d\n", data->old);
    printf("体重:%dkg\n", data->weight);
    return;
}