반응형
구조체 및 구조체 배열에 관해서는 아래 참고.
https://ansan-survivor.tistory.com/1333
위 구조체를 포인터 형태로 접근하는 방법이다.
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;
}
반응형
'C언어 \ C++ > 포인터 \ 배열' 카테고리의 다른 글
[C언어] Void 포인터 (함수 주소 저장, 값 주소 저장 만능상자) (0) | 2022.02.20 |
---|---|
[C언어] 함수포인터 (함수형 포인터) 이해하기 예제 (0) | 2022.02.20 |
[C언어] 포인터 배열, 이중포인터 배열 예제 (배열 내 포인터값을 사용할 경우) (0) | 2022.02.19 |
[C언어] 포인터의포인터(더블포인터) Swap함수 예제 (0) | 2022.02.19 |
[C언어] 포인터의 포인터 (더블 포인터, 이중 포인터, 삼중 포인터) 이해하기 예제 (2) | 2022.02.19 |