A sentimental robot

구조체 포인터 본문

C

구조체 포인터

GOD03219 2017. 12. 29. 20:31

< 포인터를 이용해서 구조체 안의 멤버변수에게 값을 넣는 2가지 방식 >


1. (*p).kor = 100; 직접연산자 . ( dot )
주의사항 : .(dot)를 먼저 인식하기 때문에 항상 *가 ( )안에 들어가게!


2. p->kor = 100; 간접 연산자 ->

 

 


 

#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;
 struct score *p;     // 구조체 포인터 : 구조체를 가르키는 포인터 >구조체의 멤버를 자유롭게 사용할수 있다.
 p = &aa; 

 

 printf("name input :");
 scanf("%s", p->name);
 rewind(stdin);
 printf("kor input:");
 scanf("%d", &p->kor);    

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

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

 

 printf("kor, eng, mat score:%d\t%d\t%d\n", (*p).kor, (*p).eng, (*p).mat);    // 값 출력


 (*p).total = (*p).kor + (*p).eng + (*p).mat;
 (*p).avg = (*p).total / 3.f;


 printf("total: %d\n", (*p).total);
 printf("average :%f\n", (*p).avg);


}

 


 

간접연산자 이용


 


#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;
 struct a *p = &aa;


 printf("name input :");
 scanf("%s", p->name);
 printf("kor input :");
 scanf("%d", &p->kor);
 printf("eng input :");
 scanf("%d", &p->eng);
 printf("mat input :");
 scanf("%d", &p->mat);


 p->sum = p->kor + p->eng + p->mat;
 p->avg = p->sum / 3.f;

 

 printf("%s\t%d\t%d\t%d\t%d\t%f\n", p->name, p->kor, p->eng, p->mat, p->sum, p->avg);

}

 


 

직접연산자 이용


 


#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;
 struct a *p = &aa;


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


 (*p).sum = (*p).kor + (*p).eng + (*p).mat;
 (*p).avg = (*p).sum / 3.f;

 

 printf("%s\t%d\t%d\t%d\t%d\t%f\n", (*p).name, (*p).kor, (*p).eng, (*p).mat, (*p).sum, (*p).avg);


}


'C ' 카테고리의 다른 글

구조체 동적메모리  (0) 2017.12.29
구조체배열 포인터  (0) 2017.12.29
구조체 배열  (0) 2017.12.29
구조체(typedef structure)  (0) 2017.12.29
배열포인터 활용  (0) 2017.12.29