C언어

No.8·2024년 4월 11일
0

정처기

목록 보기
1/3

포인터

포인터란 메모리의 주소값을 저장하는 변수이며, 포인터 변수라고도 부른다.
char형 변수가 문자를 저장하고, int형 변수가 정수를 저장하는 것처럼 포인터는 주소값을 저장한다.

포인터 변수의 선언은 아래와 같이 선언한다.

1) 주소연산자(&)

주소 연산자는 변수의 이름 앞에 사용하여, 해당 변수의 주소값을 반환한다.

2) 참조 연산자(*)

참조 연산자는 포인터의 이름이나 주소 앞에 사용하여, 포인터에 가리키는 주소에 저장된 값을 반환한다.

그냥 *p는 선언할 때를 제외하고 무조건 값을 가리킨다고 생각하면 되고 &는 주소를 가리킨다고 생각하면 된다.

  • 예시

b는 a의 주소 값이 b라는 변수에 대입된 것이고
c는 a의 주소 값을 가리킬 수 있게 된 것이다.
즉, a와 b는 연결고리가 없는 반면 a와 c는 연결고리가 있다.

배열과 포인터

  • 중요 포인트
    1. 배열 a의 주소값은 a[0]의 주소값과 같다
    2. *(p)는 p의 해당하는 주소값의 배열의 값을 말한다.

  • 중요 포인트
    1. 선위연산, 후위연산을 잘 보자

  • 중요 포인트
    1. 선위연산, 후위연산을 잘 보자

2차원 배열과 포인터

  • 중요 포인트
    1. 2차원 배열에서 각 행의 대표값은 각 행 첫번째 자리의 주소값이다
    2. 2차원 배열의 대표값은 첫 a[0][0]의 주소값이다

그러므로 a를 출력하면 a배열의 대표 주소값인 100이 출력되고
a의 값(a)은 a 배열의 첫 행의 대표값을 출력하며
a의 값(**a)은 a의 대표값의 값인 a[0][0]의 값 1이 출력된다

  • 중요 포인트
    1. 최초 p의 값은 103
    2. x는 p의 값이기 떄문에 103이 가리키고 있는 5가 x가 되며
    3. y는 p+2의 값이기 때문에 103+2=105가 가리키고 있는 9가 y가 됨

  • 중요 포인트
    1. *darr는 darr 배열의 값이기 때문에 darr[0]의 대표값

포인터 배열

  • 배열의 요소가 포인터(메모리주소)로 이루어진 것

  • 최종 출력 = bbb

  • 최종출력 = morning, u

  • 중요 포인트
    1. int *b[]는 포인터 배열이기 때문에 a[0]과 a[1]의 주소값을 원소로 가지는 배열이다 -> {100, 103}
    2. 전위연산, 후위연산에 유의한다. ++p를 해서 변한 p 값에 --p를 하는 것을 잊지 말자
  1. 출력에 \n이 없기 때문에 옆으로 이어 붙여서 출력해야 한다.

  • 중요 포인트
    1. 다차원 포인터를 유의하자
profile
88888888

0개의 댓글