// 원하는 문자로 메모리 초기화
#include <stdio.h>
#include <malloc.h>
#include <memory.h>

void main()
{
 char *buf;
 int i, size;
 
 printf(\" 4 이상의 수를 입력하시오.\");
 scanf(\"%d\", &size);

 printf(\"\\n\");

 buf = (char *)malloc(sizeof(char)*size*size);
                                                  // 사용자가 입력한 size값으로 size X size 크기의 메모리를 할당

 i = 0;
 
 while(i<size) {                         // 제어변수 i가 size보다 작은 경우 14행부터 19행 실행
  memset(buf + (size * i++), \'*\', size);                            // 현재의 주소에서 size 만큼을 \'*\'문자로 초기화
  if(i<size)
   memset(buf + (size * i++), \'$\', size);                         // 현재의 주소에서 size만큼을 \'$\'문자로 초기와
  else
   break;
 }

 for(i=1; i<=size*size; i++) {
  printf(\"%3c\", buf[i-1]);
  if(i%size==0) printf(\"\\n\");
 }
 free(buf);
}
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
책에 있는거 고대로 써봤는데;
 while(i<size) {
memset(buf + (size * i++), \'*\', size);
if(i<size)
memset(buf + (size * i++), \'$\', size);
else
break;
}
이 부분에서
if 문 들어가기 전에
이미 buf + (size * i++) 자리에다가
*를 size만큼 채웠단 얘기잖아

그런데 if 문 들어가자마자

memset(buf + (size * i++), \'$\', size);
이게 있으면 또 그자리에다가 $를 넣준다는거 아냐!?(그니까 대체) - 내 생각에
왜 실행해보면 제대로 작동하는 거지!?