アットウィキロゴ

構造体メンバ

ポインタ

構造体メンバにポインタを指定するときは、宣言時に指し示す先のオブジェクトの型を宣言しておかなければならない。
e.g.「char *p_name」

構造体で構造体を指定

struct ten {
     int po[3];
     double ave;
     }
struct kekka {
     int bango;
     struct ten s1;  ←構造体
};

ビットフィールドの利用

#include<stdio.h>
#define MEN 0
#define WOMEN 1
#define M 1
#define T 2  ←2進数で四桁のどこに1があるか判別。
#define S 4
#define H 8
main()
{
  struct kojin_data{
    int bango;
    char *name;
    unsigned int seibetu:1; ←ビットフィールドの宣言(1桁)
    unsigned int nengou:4; (4桁)
    unsigned int nen;
    unsigned int tuki;
    unsigned int hi;
   }x1={1001,"Aoyama",MEN,S,31,4,26};

  printf("bango  %4d\n",x1.bango);
  printf("name %s\n",x1.name);
  if(x1.seibetu == MEN) printf("seibetu MEN\n");
  else                  printf("seibetu WOMEN\n");
  printf("birthday ");
  if     (x1.nengou == M)  printf("M.");
  else if(x1.nengou == T)  printf("T.");
  else if(x1.nengou == S)  printf("S.");
  else if(x1.nengou == H)  printf("H.");
  printf("%2d.%2d.%2d\n",x1.nen,x1.tuki,x1.hi);
}

ポインタを介したメンバの指定

#include <stdio.h>
int main()
{
	struct kekka {
	int bango;
	char *p_name;
	double ave;
	char hyouka;
	};

	struct kekka d1={1001,"yamato",77.67,'B'};
	
	struct kekka *p_d1;

	p_d1=&d1;
	
	printf("bango   name   heikin   hyouka\n");
	printf("%4d   %12s   %8.2f   %1c\n",p_d1->bango,p_d1->p_name,p_d1->ave,p_d1->hyouka);
}
最終更新:2010年12月11日 16:35