본문 바로가기
코스웨어/13년 스마트컨트롤러

5장 연습문제 - 석주원

by 알 수 없는 사용자 2013. 3. 22.
728x90
반응형

1. 변수를 래와 같이 정하, 변수의 주소를 력하는 로그 작성하 라.

int inumber = 2

float fnumber = 34.

char ch = 'g'


#include <stdio.h>

int main()
{
  int iNum = 25;
  float fNum = 34.5;
  char ch = 'g';
  
  printf("iNum : %d \t&iNum : %p\n", iNum, &iNum);
  printf("fNum : %3.2f \t&fNum : %p\n", fNum, &fNum);
  printf("ch   : %c \t&ch   : %p\n", ch, &ch);
  
  return 0;
}

 

 

2. 위의 가리 포인터 수를 각각 정하, 포인터 수를 해서 세 값을 력하는 로그 작성.

 

 

#include <stdio.h>

int main()
{
  int iNum = 25;
  int *ip;
  float fNum = 34.5;
  float *fp;
  char ch = 'g';
  char *cp;

  ip = &iNum;
  fp = &fNum;
  cp = &ch;
  
  printf("iNum(*ip) : %d \t\t&iNum(ip) : %p\n", *ip, ip);
  printf("fNum(*fp) : %3.2f \t&fNum(fp) : %p\n", *fp, fp);
  printf("ch(*cp)   : %c \t\t&ch(cp)   : %p\n", *cp, cp);
  
  return 0;
}



2. float 변수 fnumber 38.9 설정 다음, fnumber 이트 내용 아스 키 출력.// - .

 

 

// %c로 문자를 출력해보려 했는데, 의도한 문자가 
// 안나와서 txt파일에다 출력해봤습니다. 그래도 결과는 마찬가지..
// 콘솔창에선 확장 아스키 코드가 안먹히나 봅니다.
#include <stdio.h>

int main()
{
  float fNum;
  // 음수로 인식하지 않도록 부호없는 포인터로 선언
  unsigned char uch, *ucp;
  char cCnt;
  FILE *fp;


  fNum = 38.9f;
  ucp = (unsigned char *)&fNum;
  
  // write.txt파일을 생성. write.txt가 없어도 만듬.
  fp = fopen("write.txt""w");
  // 에러처리부분. 없어도 될 코드일듯..
//  if(0 == fp)
//  {
//    printf("write.txt파일을 찾을 수 없습니다.\n");
//    return 0;
//  }

  // 매 루프마다 1 byte씩 포인터를 이동하여 그 값을 16진수와 문자로 찍어줌
  for (cCnt = 0; cCnt < 4; ++cCnt)
  {
    uch = *(ucp + cCnt);
    printf("%02X %c\n", *(ucp + cCnt), *(ucp + cCnt));
    // write.txt 에 써주는 부분
    fprintf(fp, "%02X %u %c\t", uch, uch, uch);
  }
  putchar('\n');

  // 파일 포인터를 닫아준다.
  fclose(fp);
  
  return 0;
}


3. int 변수 inumber 드로 읽어서 설정한 , 인터 inumber 들어 력하 로그 작성.

 

#include <stdio.h>

int main()
{
  int iNum;
  int *ip;
  
  fprintf(stdout, "정수 하나를 입력하세요 : ");
  fscanf(stdin, "%d"&iNum);

  ip = &iNum;
  
  fprintf(stdout, "두 배로 돌려드립니다 : %d", (*ip)*2);

  return 0;
}

 

4. 포인터 수의 저장 간의 출력 프로램을 하라.

 

// 굳이 포인터 변수를 선언할 필요가 없네요;;
#include <stdio.h>

int main()
{
  char *cp;
  short *sp;
  int *ip;
  float *fp;
  double *dp;
  long *lp;
  void *vp;

  cp = NULL;
  sp = NULL;
  ip = NULL;
  fp = NULL;
  dp = NULL;
  lp = NULL;
  vp = NULL;

  // 포인터 변수를 사용하여 알아보기
  printf("char형 포인터의 크기 : %dbytes\n"sizeof(cp));
  printf("short형 포인터의 크기 : %dbytes\n"sizeof(sp));
  printf("int형 포인터의 크기 : %dbytes\n"sizeof(ip));
  printf("float형 포인터의 크기 : %dbytes\n"sizeof(fp));
  printf("double형 포인터의 크기 : %dbytes\n"sizeof(dp));
  printf("long형 포인터의 크기 : %dbytes\n"sizeof(lp));
  printf("void형 포인터의 크기 : %dbytes\n"sizeof(vp));

  // 포인터 자료형으로만 알아보기
  printf("\nchar형 포인터의 크기 : %dbytes\n"sizeof(char *));
  printf("short형 포인터의 크기 : %dbytes\n"sizeof(short *));
  printf("int형 포인터의 크기 : %dbytes\n"sizeof(int *));
  printf("float형 포인터의 크기 : %dbytes\n"sizeof(float *));
  printf("double형 포인터의 크기 : %dbytes\n"sizeof(double *));
  printf("long형 포인터의 크기 : %dbytes\n"sizeof(long *));
  printf("void형 포인터의 크기 : %dbytes\n"sizeof(void *));

  return 0;
}

 

5. 주소 저장 변수 포인터 한다.



6. 포인 가리 설정    NULL   .




728x90