-구조체-

구조체는 사용자 정의 자료형이다.

ex)
struct scb  // new type
{
int A; // old type
};

구조체를 편하게 쓰려고 typedef를 한다.
예를들어

typedef struct _scb
{
     int A;
}; SCB;
올드 타입은 보통  _(언더바) 를 사용하고 뉴타입은 잘 쓰는것으로 적는다.

예제소스
주소, 문자, 크기를 넘겨주면 메모리를 문자로 채우는 함수 직접 구현(리눅스에 memset  함수가있다)

#include <stdio.h>

typedef unsigned char uchar;

struct scb
{
  int A;
  char B;
  int C;
};
void PrintSCB(struct scb *);
void my_memset(void *,unsigned char,int);

int main()
{
  struct scb A={1,'A',2};
  PrintSCB(&A);
  
  my_memset(&A,0,sizeof(struct scb));
  
  PrintSCB(&A);
  
  printf("address of A  : %08X\n",&A);
  printf("address of A.A: %08X\n",&A.A);
  printf("address of A.B: %08X\n",&A.B);
  printf("address of A.C: %08X\n",&A.C);
  return 0;
}

void PrintSCB(struct scb *stData)
{
  printf("%d\n",stData->A);
  printf("%d\n",stData->B);
  printf("%d\n",stData->C);
}
void my_memset(void *vAdd,uchar ucVal,int iSize)
{
  while(iSize>0)
  {
  --iSize;
  *((uchar *)vAdd+iSize)=ucVal;
  }
  
}


실행 결과


0223.png