A sentimental robot

Pointer,2차원배열 본문

C

Pointer,2차원배열

GOD03219 2017. 12. 29. 20:00

#include<stdio.h>
#pragma warning(disable:4996)
void main()
{


 char name[3][10] = { 0, };     
 int score[3][4] = { 0, };     
 float avg[3] = { 0 };   
 int i, j;
 char scoName[6][10] = { "Name","Kor","Eng","Mat","Total","Avg" };


 //포인터 선언
 char *pName = NULL;     // name 접근 포인터
 int *pScore = NULL;     // score 접근 포인터
 float *pAvg = NULL;     // avg 접근 포인터
 char *pScoName;         //scoName 접근 포인터

 

 //포인터 초기화

 pName = *name;     // name을 1차원 주소로 타입맞추기(포인터가 1차원주소를 가르키는 타입이기 때문) ★
 pScore = *score;
 pAvg = avg;
 pScoName = *scoName;

 

 for (i = 0; i < 3 ; i++)
 {
  printf("input %s:", pScoName);
  rewind(stdin);
  scanf("%s", pName + (i * 10));    // 1차원 주소인 pName의 한 행을 건너뛰기 위해 * 10 ( character의 byte )


  for (j = 0; j < 3 ; j++)
  {
   printf("input %s:", pScoName + (1 + j) * 10);
   rewind(stdin);
   scanf("%d", pScore + (i * 4) + j);    //  pScore 한 행 (int 4byte)를 건너뛰기 위해 *4


   *(pScore + (i * 4) + 3) += *(pScore + (i * 4) + j);


  }

 

 

 }

 

 //전체출력

 for (i = 0; i < 6; i++)
 {
  printf("%s\t", pScoName + i * 10);
 }
 puts("");


 for (i = 0; i < 3; i++)
 {
  printf("%s\t", pName + (i * 10));

 

  for (j = 0; j < 4; j++)
  {

   printf("%d\t", *(pScore + (i * 4) + j));

  }


  printf("%f", *(pAvg + i));
  puts("");


 }

}

 


'C ' 카테고리의 다른 글

함수와 포인터를 사용한 1차원배열  (0) 2017.12.29
Call by address  (0) 2017.12.29
[ ]대신*만을 이용한 2차원배열  (0) 2017.12.29
Pointer  (0) 2017.12.29
[ ]대신*를 사용한 1차원 배열  (0) 2017.12.29