본문 바로가기

정보처리기사/c언어강의

[C언어(강의)] 35강 (구조체)

 

[ 흥달쌤 유투브 강의 정리 

https://www.youtube.com/watch?v=_9ZFUkIJzNU&list=PLniy99c_7ZfrVN_3-mhDUfTLxggLW23l7&index=35

 


 

(35강) 구조체, 포인터 이동

 

* 구조체란? 

  여러 변수들을 모아서, 하나의 객체를 구성할 때 사용하는 사용자 정의 타입 객체.

 

* 구조체 구성

struct 구조체명

{

  멤버변수1;

  멤버변수2;

};

 

* 구조체 정의 및 사용

struct person
{
    char *name;
    int age;
};

struct person user1;
user1.name = "h user";
printf("%s", user1.name)
// h user

 


 

(구조체 선언 생략)

struct person
{
    char *name;
    int age;
}test;

test.name = "h user";
test.age = 40;
printf("%s : "%d", test.name, test.age);
// h user : 40

 


 

(포인터 변수 사용)

struct person
{
    char *name;
    int age;
};

struc person *p;
p -> name = "test_2";
p -> age = 40;
printf("%s : "%d", p -> name, p -> age);
// test_2 : 40

 


 

=> 300

 

구조체 뒤에 쓴 data, *p 각자의 객체 생성.

data  |   fp   |      200번지    => fp를 가짐.

*P     |   fp   |      300번지   => fp를 가짐.

p = &data                                  => p에 data의 주소값(200번지)을 할당.

p  와  data  모두 같은 |   fp   |    200번지 를 가르킴.

( p -> fp ) = x + 1                       => p가 가르키는 fp에 x + 1 할당.     () 괄호부분을 하나의 변수로 보기!!

printf( '%d' , *(++(p -> fp));        =>  p가 가르키는 fp는 x + 1, 여기에 ++적용한 주소의 배열값.

x  =  {100, 200, 300, 400}

10       10    11    12   13