A sentimental robot

구조체배열 포인터 본문

C

구조체배열 포인터

GOD03219 2017. 12. 29. 20:35

#include<stdio.h>
#pragma warning (disable:4996)
struct  score  
{
 char name[10];
 int kor;
 int eng;
 int mat;
 int total;
 float avg;

};
void main()
{
 struct score aa[3];   
 struct score *p;       // 구조체 포인터 선언
 p=aa;                

 int i;


 for(i=0 ; i<3 ; i++)
 {
  printf("Name input:");
  scanf("%s", (p + i)->name);     
  printf("kor input:");
  scanf("%d", &(p + i)->kor);     

  printf("eng input:");
  scanf("%d", &(p + i)->eng);
  printf("mat input:");
  scanf("%d", &(p + i)->mat);

 

  (p + i)->total = (p + i)->kor + (p + i)->eng + (p + i)->mat;   // 간접연산자 값
  (p + i)->avg = (p + i)->total / 3.f;

 

 }


 for (i = 0; i < 3; i++)
 {
  printf("%s\t", (*(p + i)).name);         // 직접연산자 값 > .(dot)을 먼저 인식하기 때문에 *를 ( )안에 넣어주기
  printf("%d\t", (*(p + i)).kor);            
  printf("%d\t", (*(p + i)).eng);
  printf("%d\t", (*(p + i)).mat);
  printf("%d\t", (*(p + i)).total);
  printf("%f\n", (*(p + i)).avg);

 

 }

 


 

직접 연산자 (*p).kor 에서 *안쓰고 [ ]쓰기 , 구조체배열과 똑같은 방식이 됨


 


#include<stdio.h>
#pragma warning(disable:4996)
struct a {

 

 char name[10];
 int kor;
 int eng;
 int mat;
 int sum;
 float avg;


};


void main() {

 

 struct a aa[3];
 struct a *p = aa;
 int i;


 for (i = 0; i < 3; i++) {


  printf("name input:");
  scanf("%s", p[i].name);
  printf("kor :");
  scanf("%d", &p[i].kor);
  printf("eng :");
  scanf("%d", &p[i].eng);
  printf("mat :");
  scanf("%d", &p[i].mat);


  p[i].sum = p[i].kor + p[i].eng + p[i].mat;
  p[i].avg = p[i].sum / 3.f;


 }


 for (i = 0; i < 3; i++) {
  printf("%s\t%d\t%d\t%d\t%d\t%f\n", p[i].name, p[i].kor, p[i].eng, p[i].mat, p[i].sum, p[i].avg);

 }

 
}


}

 

'C ' 카테고리의 다른 글

다차원포인터 동적메모리할당  (0) 2017.12.29
구조체 동적메모리  (0) 2017.12.29
구조체 포인터  (0) 2017.12.29
구조체 배열  (0) 2017.12.29
구조체(typedef structure)  (0) 2017.12.29