프로그래밍 공부
작성일
2023. 3. 18. 00:19
작성자
WDmil
728x90

문자열 형태로 포인터를 선언할 수 있다.

포인터 변수를  문장으로 선언하였을 경우를 알아보자.

위와같이 선언했다고 가정해보자.

문자열은 전부 배열형태로 이어지게 메모리에 생성이 되고 마지막에 '\0'이 붙게된다.

그리고 char*pstr은 ptrSting 의 p를 가리키게 된다.

 

배열과 다른점이 무엇일까?

배열은 다음값을 배열의 list[0], list[1]이런식으로 접근이 가능하다.

그러나, 포인터로 선언된 문장의 경우에는 

이런식으로 접근을 할 수 없다. 접근하게되면,

이런식으로 나타나게 된다. 이유가 무엇일까?

pstr은 포인터이지 배열이 아니기 때문이다. 포인터는 위치좌표를 나타낼 뿐, 배열처럼 접근방법을 제공하지 않기 때문에 접근하기 위해서는 배열처럼 접근이 아닌, ++나 --같이 좌표를 직접 지정해주어야 한다.


2차원 배열의 포인터 주소 접근방법을 알아보자

위와 같이 표현할 수 있을것이다.

2차원 배열을 포인터로 저장하는 방법을 살펴보자.

다른방법으로도 출력해보자. 밑 예시를 살펴보자.


포인터를 상수화 시켜줄 수 도 있다. 상수화 하면 변경할 수 없는 데이터가 된다.


보이드 포인터 에 대해 알아보자.

보이드 포인터는 일반 포인터와 다르게 포인터의 경로에 어떠한 데이터를 지정할 것 인지 알 수 없을 때 사용한다.

즉, void * 변수 선언문은 포인터 가 가르키는 데이터의 종류에 상관없이 포인터를 지정할 수 있다는 말 이다.

위 void*voidptr 처럼 선언한다.

사용할 때 에는 해당 포인터의 데이터 종류에 따라 선언방법이 달라진다. 사용방법의 간단한 예시를 살펴보자.

위와 같이 형변환 후 사용할 수 있다.

포인터에 (int*)은 int형의 포인터를 받기위해 int 포인터 로 형변환 하겠다는 의미 이다. 그 후 모든 데이터 문에 *를 선언하여 포인터에 들어있는 데이터를 호출하게 된다.

728x90