반응형
구조체 배열의 선언과 접근

arr[0].xPos = 10; 와 같이 구조체 배열의 멤버변수에 접근할 수 있다.

struct point
{
    int xPos;
    int yPos;
}
struct point arr[4];	// 길이가 4인 구조체 배열 선언

 

 

 

구조체 배열의 초기화

아래의 코드와 같이 배열요소 각각의 초기화 값을 중괄호로 묶어 표현한다.

struct city arr[3] =
{
    {"서울", "강동"},	// 첫 번째 요소의 초기화
    {"인천", "서구"},	// 두 번째 요소의 초기화
    {"서울", "송파"}	// 세 번째 요소의 초기화
};

 

 

 

구조체 변수와 포인터

아래의 코드에서 포인터 변수는 1과 2번처럼 멤버 변수에 접근할 수 있다.

struct point pos = {11, 12};
struct point* pptr = &pos;	// 구조체 point의 포인터 변수 선언

// 구조체point의 포인터 변수의 멤버 변수 접근 방법
(*pptr).xPos = 10;	// 1
pptr -> xPos = 10;	// 2

 

아래의 코드처럼 사용 가능하며,

-> 연산자는 프로그래머들이 주로 사용하는 연산자이다.

(*pptr).xPos += 4;	// 멤버 변수 xPos에 4를 더한다
pptr -> xPos +=1;	// 멤버 변수 xPos에 1을 더한다.

 

포인터 변수를 구조체의 멤버로 선언할 수 있으며 

아래의 코드는 그 예제이다.

struct point
{
    int xPos;
    int yPos;
};
struct circle
{
    double radius;
    struct point* center;	// 구조체 변수의 멤버로 구조체 변수 선언
};

int main()
{
    struct point cen = {2, 7};
    double rad = 5.5;
    struct circle ring = {rad, &cen};
    printf("원의 반지름 : %g \n", ring.radius);	// 5.5 출력
    printf("원의 중심 [%d, %d] \n", (ring.center) -> xPos, (ring.center) -> yPos);	// [2, 7] 출력
    return 0;
}

 

 

구조체 변수 주소

구조체 변수의 주소 값과 구조체 변수의

첫 번째 멤버 변수의 주소 값은 같다.

 

반응형

 

반응형

+ Recent posts