반응형

구조체 및 구조체 배열에 관해서는 아래 참고.

https://ansan-survivor.tistory.com/1333

 

[C언어] 구조체(struct)에 배열을 선언하여 사용 방법, 선언과 동시에 초기화

앞서 구조체에 대한 설명이 있다. https://ansan-survivor.tistory.com/1331 [C언어] 구조체(struct) 에 대해서, C언어 구조체란? 구조체 사용방법, 구조체 선언과 동시에 초기화 구조체(struct)란?  - 여러 자료..

ansan-survivor.tistory.com

 

위 구조체를 포인터 형태로 접근하는 방법이다.

 

pos의 자료형은 struct point 이므로 포인터 변수 pptr의 타입도 struct point * 으로 선언했다. 그리고 포인터이므로 pos 구조체의 주소를 넣어주었다.

// 구조체 선언 및 초기화
struct point pos = {11, 12};

// 구조체 인스턴스 pos의 주소를 가리키는 포인터 선언
struct point * pptr = &pos;

 

포인터 변수 선언한 pptr은 아래와 같이 이용한다. 해당 구조체에 값을 넣기 위해

*pptr 으로 구조체에 접근, 연산자 . 마침표를 이용해 구조체 내부의 값 xpos, ypos에 접근하는 방식이다.

(*pptr).xpos = 10;
(*pptr).ypos = 20;

하지만 위 연산자를 아래와 같이 대체할 수 있다. (빨간색 부분을 보면 된다)

(*pptr).xpos  ==  pptr->xpos

pptr->xpos = 10;
pptr->ypos = 20;

 

반응형

 

사용 예제

#include <stdio.h>

struct point
{
	int xpos;
	int ypos;
};

int main()
{
	// 구조체 선언과 동시에 초기화 (2개의 인스턴스 pos1, pos2)
	struct point pos1 = { 1, 2 };
	struct point pos2 = { 100, 200 };

	// pos1인스턴스를 가리키는 포인터 변수 선언
	struct point * pptr = &pos1;

	// pptr이 pos1을 가리키니, pos1으로 접근함
	(*pptr).xpos += 4;
	(*pptr).ypos += 5;
	printf("[%d %d] \n", pptr->xpos, pptr->ypos);


	return 0;
}

해당 주소에 접근해서 더해짐

반응형

+ Recent posts