본문 바로가기
  • 문과생의 백엔드 개발자 성장기
|Developer_Study/정보처리기사

[정보처리기사] C언어 구조체, 포인터이동

by 케리's 2023. 3. 9.

1. 구조체

하나 이상의 변수를 묶어 그룹화 하는 사용자 정의 자료형

ex) 사람 = 이름, 나이, 성별 등등등

 

1) 일반 변수 

struct person//(구조체명)
{
	char * name; //(멤버변수명)
	int age; //(멤버변수명)
};

struct person user1; //user1이라는 변수안에 name, age가 들어있다고 생각하면됨
user1.name = "h user"; //user1이 가지고있는 name에 "h user"를 대입해라
printf("%s", user1.name); //user1.name 출력 


struct person//(구조체명)
{
	char * name; //(멤버변수명)
	int age; //(멤버변수명)
}person; // 이렇게 생성과 동시에 정의해도됨

user1.age = 20; //user1이 가지고있는 name에 "h user"를 대입해라
printf("%d", user1.age); //user1.age 출력

 

2) 포인터에 담을 때

struct person//(구조체명)
{
	char * name; //(멤버변수명)
	int age; //(멤버변수명)
};

struct person *p; //user1이라는 변수안에 name, age가 들어있다고 생각하면됨
p -> name = "test2"
p -> age = "20"
printf("%s : %d", p->name, p->age); //user1.name 출력

 

3) 예제 

#include<stdio.h> 
int main(){ 
    struct list { // 구조체 이름 list
        int *fp;  // 포인터 변수 fp, 주소값이 담김
    } data, *p;   // data, *p 각각 구조체 생성
    
    int x[] = { 100, 200, 300, 400 }; 
    p = &data; //data의 주소값 p에 대입
    p->fp = x + 1; // p가 바라보는 data의 fp에 x가 가진 주소에서 1을 더한다.
    printf("%d", *(++p->fp)); // p가 바라보는 fp에 ++1을 한 주소값의 값, 300 출력
    return 0;
    
}

댓글